vaikee selittää mut meneekö tää ihan oikein:
if combobox1.itemindex=0 then
begin
image1.Visible:=true;
image2.Visible:=false;
image3.Visible:=false;
if combobox1.ItemIndex=1 then
begin
image1.Visible:=false;
image2.Visible:=true;
image3.Visible:=false;
if combobox1.itemindex=2 then
begin
image1.Visible:=false;
image2.Visible:=false;
image3.Visible:=true;
Eli tarkotus olis saada tuosta comboboxien valikoista valittua kuva mutta ku painan ensin ykkos vaihtoehtoa joka siis olettamukseni mukaan on itemindex=0, se kyllä toimii, mutta kun painan sitä kakkos vaihtoehtoo eli itemindex=1 niin ykkös vaihtoehto jää päälle eikä kakkos vaihtoehto tule ollenkaan näkyviin. Ja sama kolmannessa vaihtoehdossa. Eka jää päälle... Noiden kuvien visible on laitettu falseksi..
combobox
12
328
Vastaukset
- vieläjotain
Vielä vähä lisäystä: Ton combobox1:sen Ominaisuuksissa Items kohdassa on lueteltu noi valikoiden nimet eli tällälailla ne on siellä
Kuva
Toinen kuva
Kolmas kuva
Pitäskö tohon viel jotain laittaA?- ----------------
Eli kokeilin sitä Lazaruksessa ja laitoin tuon koodin vähän täydennettyinä ComboBox:n onChange tapahtumaan (Tuplaklikkaus komponenttimuokkaimessa tapahtumat-välilehdellä tekee tuon tapahtuman rungon ja täydennettynä se on tälläinen:)
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if combobox1.itemindex=0 then
begin
image1.Visible:=true;
image2.Visible:=false;
image3.Visible:=false;
end;
if combobox1.ItemIndex=1 then
begin
image1.Visible:=false;
image2.Visible:=true;
image3.Visible:=false;
end;
if combobox1.itemindex=2 then
begin
image1.Visible:=false;
image2.Visible:=false;
image3.Visible:=true;
end;
end;
- ...
if combobox1.itemindex=0 then
begin
image1.Visible:=true;
image2.Visible:=false;
image3.Visible:=false; END ELSE
if combobox1.ItemIndex=1 then
jne
tai case combobox1.itemindex of
0:jne
end;- kuinkakas
Eli selitän tämän mun ohjelman jotenkin. Eli tarkoitus olisi tehdä ohjelma joka laskee pinta-alan. Kappale jonka pinta-ala lasketaan valitaan comboboxista. Eli jos otan cb:n valinnan 1 ruutuun ilmestyy kuva jossa on neliö. Vieressä on teksti kentät (2) joihin kirjoitaan luvut ja LASKE panikkeella ohjelma laskee pinta-alan teksti kenttään 3. Eli nyt laske painikkeessani on tälläinen ohjelma kirjoitettuna :
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
s:=a*b;
edit3.Text:=floattostr(s);
Nyt pitäs löytää keino, miten vaihdan tuon s:a*b :n s:a*b/2 :ksi samalla kun painan comboboxin valintaa 2.
Ohjelman alussa olen esitellyt muuttujat
var
Form1: TForm1;
s,a,b:real; - Tälläistäkö ratkaisua haet
kuinkakas kirjoitti:
Eli selitän tämän mun ohjelman jotenkin. Eli tarkoitus olisi tehdä ohjelma joka laskee pinta-alan. Kappale jonka pinta-ala lasketaan valitaan comboboxista. Eli jos otan cb:n valinnan 1 ruutuun ilmestyy kuva jossa on neliö. Vieressä on teksti kentät (2) joihin kirjoitaan luvut ja LASKE panikkeella ohjelma laskee pinta-alan teksti kenttään 3. Eli nyt laske painikkeessani on tälläinen ohjelma kirjoitettuna :
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
s:=a*b;
edit3.Text:=floattostr(s);
Nyt pitäs löytää keino, miten vaihdan tuon s:a*b :n s:a*b/2 :ksi samalla kun painan comboboxin valintaa 2.
Ohjelman alussa olen esitellyt muuttujat
var
Form1: TForm1;
s,a,b:real;Tälläistäkö ratkaisua haet
procedure TForm1.Button1Click(Sender: TObject);
var a, b, ala :real;
begin
a := StrToFloat( Edit1.Text );
b := StrToFloat( Edit2.Text );
case ComboBox1.ItemIndex of
0 : ala := a * b;
1 : ala := ( a * b ) / 2;
else ala := 0;
end;
Edit3.Text := FloatToStr( ala );
end;
- vihjeitä
Opettele käyttämään paikallisia muuttujia.
Eli aliohjelmiin ja funktioihin voi lisätä
niiden esittelyn jälkeen paikallisten muuttujien esittely
Tyyliin
procedure x;
var r:real;
begin
...
end; - vihjeitä
Voit lisätä luokkaan (tässä tapauksessa luokka on TForm1) omia metodeita eli aliohjelmia. Luokan aliohjelma esitellään esim. sen Private osassa ja sen toteutus on sitten jäljenpänä (implementation osassa) lisättynä luokan nimellä.
type
TForm1 = class(TForm)
...
private
procedure laske;
...
implementation
...
procedure TForm1.laske;
var ...
begin
...
end;
Voit testata tuolla laske aliohjelmassa mikä ItemIndex on ComboBoxissa valittuna. Aliohjelmaa laske kutsut sitten niissä tapahtumissa missä
haluat laskemisen tapahtuvan.- Delphikoodari..
Olioita voi upottaa esim. tähän mainittuun TComboBox-komponenttiin.
var
munOlio: TOmaLuokka;
begin
munOlio := TOmaLuokka.Create();
cbxMunComboBox.Items.AddObject( munOlio.Otsikko, TObject( munOlio ));
end;
// ja pomimalla se sitten sieltä..
var
munOlio: TOmaLuokka;
begin
index := cbxMunComboBox.ItemIndex;
munOlio := TOmaLuokka(cbxMunComboBox.Items.Object[index]);
if Assigned( munOlio ) then
begin
munOlio.Terve();
end;
end;
// jne.. kätevää :)
end; - onnistuukos
Delphikoodari.. kirjoitti:
Olioita voi upottaa esim. tähän mainittuun TComboBox-komponenttiin.
var
munOlio: TOmaLuokka;
begin
munOlio := TOmaLuokka.Create();
cbxMunComboBox.Items.AddObject( munOlio.Otsikko, TObject( munOlio ));
end;
// ja pomimalla se sitten sieltä..
var
munOlio: TOmaLuokka;
begin
index := cbxMunComboBox.ItemIndex;
munOlio := TOmaLuokka(cbxMunComboBox.Items.Object[index]);
if Assigned( munOlio ) then
begin
munOlio.Terve();
end;
end;
// jne.. kätevää :)
end;Entäs onnistusko sillälailla, että jos kirjoittaisin
tuohon painonappiin ::
procedure TForm1.Button2Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
s:=a b;
edit4.Text:=floattostr(s);
if combobox1.itemindex=1 then
begin
s:=a*b;
end; - Delphikoodari..
onnistuukos kirjoitti:
Entäs onnistusko sillälailla, että jos kirjoittaisin
tuohon painonappiin ::
procedure TForm1.Button2Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
s:=a b;
edit4.Text:=floattostr(s);
if combobox1.itemindex=1 then
begin
s:=a*b;
end;En tajua mikä on logiikka tuossa esimerkissä?
Eli kun painat nappia s := a b, jonka tulos näytetään ja jos jossakin pudotusvalikossa on toinen itemi valittuna s onkin a*b ??
Tokihan tuo onnistuu, mikäs siinä. - combobox
Delphikoodari.. kirjoitti:
En tajua mikä on logiikka tuossa esimerkissä?
Eli kun painat nappia s := a b, jonka tulos näytetään ja jos jossakin pudotusvalikossa on toinen itemi valittuna s onkin a*b ??
Tokihan tuo onnistuu, mikäs siinä.Siis kun valitsen combobxin vaihto ehdon 1(0) LASKE painike laskee
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
s:=a b;
edit3.Text:=floattostr(s);
Kun valitsen comboboxin vaihtoehdon 2(1) niin LASKE panikse laskisikin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
s:=a*b;
edit4.Text:=floattostr(s);
jne..
Eli miten tuo onnistuisi yksinkertaisimmalla tavalla? - korjaus231
combobox kirjoitti:
Siis kun valitsen combobxin vaihto ehdon 1(0) LASKE painike laskee
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
s:=a b;
edit3.Text:=floattostr(s);
Kun valitsen comboboxin vaihtoehdon 2(1) niin LASKE panikse laskisikin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
s:=a*b;
edit4.Text:=floattostr(s);
jne..
Eli miten tuo onnistuisi yksinkertaisimmalla tavalla?Toi vaihtoehto 2(1) niin ei tietenkään tulisi edit4:ään niin kuin siinä lukee vaan edelleen edit3.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
SDP haluaa LISÄÄ veroja bensa-autoille!
Sdp:n vaihtoehtobudjetti esittää polttomoottoriautoille lisää veroja Sdp esittää tuoreessa vaihtoehtobudjetissaan verot17717462Riikka se jytkytti BKT:stä nyt 0,3 prosenttia pois
Ja vain kolmessa kuukaudessa! Vuositasollahan tuo tarkoittaa reilun prosentin pudotusta. Pärjäisi varmaan lasketteluss4710034Vasemmistoaate on aatteista jaloin
Kaikki saavat ja kukaan ei jää ilman. Kuka tuollaista voisi vastustaa?615917Antti Lindtman kiitti valtiovarainministeri Purraa
Ministeri Purra kertoi ottavasa vastuun EU:n alijäämämenettelyyn joutumisesta. Hän myös sanoi tietävänsä, että Lindtman463210Suomalaisten enemmistö on (ateisteja / fiksuja / sosialisteja)
Tai jokin noiden yhdistelmä, koska S-ryhmän markkinaosuus päivittäistavarakaupasta on yli 50 prosenttia.212911Brittiläinen vasemmistolehti: Sanna Marin oli vihdoin rehellinen
Nyt tulee pahasti lunta tupaan Seiskan tähtitytölle. Ex-pääministerin kirjaa arvostellaan latteuksista ja itsekehusta.252822"Purra löylytti oppositiota", sanoi naistoimittaja Pöllöraadissa
Kyllä, Purra tekee juuri sitä työtä mitä hänen tuossa asemassa pitää tehdä, hän antaa oppositiolle takaisin samalla mita562692Henkilökohtaisia paljastuksia Dubaista - Kohujulkkis Sofia Belorf on äitipuoli ja puoliso!
Tiesitkö, että Sofia on äitipuoli ja rakastava puoliso? Sofia Belorf saa oman sarjan, jossa seurataan hänen Bling Bling862628- 1381890
Alexander C. G. riisti demari-Veijolta arvonimen
"Stubb myönsi 66 arvonimeä ja peruutti yhden arvonimen. Presidentti Tarja Halonen myönsi Baltzarille kulttuurineuvoksen431870