combobox

hmmm..

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..

12

341

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. Rakas

      Eihän se tietysti minulle kuulu, mutta missä sinä olet? 😠
      Ikävä
      50
      1447
    2. Pidit itseäsi liian

      Vanhana minulle? Niinkö?
      Ikävä
      59
      1381
    3. SDP:n lyhyt selviytymisopas

      1. Komitea on vastaus, oli kysymys mikä tahansa Jos maailma on muuttumassa tai jossain palaa, demari ei hätiköi. Ensin p
      Maailman menoa
      10
      988
    4. Joko olet luovuttanut

      Mun suhteen?
      Ikävä
      60
      791
    5. Haluaisitko oikeasti

      Vakavampaa välillemme vai tämäkö riittää
      Ikävä
      49
      774
    6. Mitä se olisi

      Jos sinä mies saisit sanoa kaivatullesi mitä vain juuri nyt. Ilman mitään seuraamuksia yms. Niin mitä sanoisit?
      Ikävä
      41
      755
    7. Nanna Karalahti :Paljastus bisneksistä Jere Karalahden kanssa!

      Ottanut yhteyttä seiskalehden toimittajaan ja kertonut totuuden yhteisestä Herotreeni-nimisestä verkkovalmenuksesta.
      Kotimaiset julkkisjuorut
      118
      607
    8. Sotekeskus

      Aloite on hyvä, kiitokset siitä. Mutta jos olette yhtään seuranneet hyvinvointialueen kokouksia niin sehän on jo nuijit
      Ähtäri
      32
      587
    9. Toivoisitko

      Toivoisitko, että kaivattusi olisi introvertimpi tai extrovertimpi? Itsenäinen tai tarvitsisi enemmän apua/sinua? Osoit
      Ikävä
      81
      582
    10. Sinunkin pitää jättää

      Se kaivattusi rauhaan.
      Ikävä
      38
      556
    Aihe