![]() |
Fragen zu ComboBox und Items
:?:
Hi, ich hoffe, das gehört in dieses Forum. Ich bin noch Noob, was Programmierung und Delphi angeht. Ich hab ein kleines Programm erstellt, wo ich verschiedene Buttons hab und 4 ComboBoxes (die alle übereinander liegen. Ich hab das so gescriptet, dass zb. ComboBox4 sichtbar wird, nachdem man auf Button3 geklickt hat. alle anderen ComboBoxes werden dann invisible. Soviel dazu. Nun hab ich natürlich auch Items in den jeweiligen ComboBoxes. Bei einem Klick auf ein bestimmtes Item soll nun etwas passieren. In meinem Fall zb. sollen Edit-Felder und Labels un-/sichtbar werden. Das ist alles kein Problem, nur weiß ich nicht, wie man das so scriptet, dass bei einem Klick auf Item1 zb. genau die Aktion1 in Kraft tritt und bei einem Klick auf Item2 genau die Aktion2. Bei mir kommt immer Aktion1, egal ob ich Item1, Item2, Item3 ... gewählt habe. Ich denke, ihr wisst schon, was ich meine. Wenn mir jemand den Quellcode mal geben könnte, wäre super! Greetz Dibi |
Re: Fragen zu ComboBox und Items
Hi und herzlich willkommen im Forum!
Du hast zwei möglichkeiten: Die erste:
Delphi-Quellcode:
Das ist die erste Veriosn! Achtung 0 ist für den ersten Combobox eintrag 1 für den zweiten und so weiter!
Procedure TForm1.Combobox1click(Sender:TObject);
begin case Combobox1.itemindex of 0: begin Label1.visible := true; Label2.visible := false; ... 1: Label3.visible := false; .... Die Zweite möglichkeit:
Delphi-Quellcode:
Spider
Procedure {Combobox};
begin if Combobox1.itemindex = 0 then begin Label1.visible := true; Label2.visible := false; end else if Combobox1.visible = 1 then {blablabla} |
Re: Fragen zu ComboBox und Items
Hallo und herzlich Willkommen in der DP! :dp:
Schau Dir mal Case und ItemIndex an. So kann man auf die jeweiligen Werte der ComboBox zugreifen. |
Re: Fragen zu ComboBox und Items
Delphi-Quellcode:
[edit]
procedure TForm1.ComboBox1Change(Sender: TObject);
begin Case Combobox1.ItemIndex Of 0: Aktion1; // Item1 1: Aktion2; // Item2 2: Aktion3; // Item3 // .... end; end; Ups... da war einer schneller :-) [/edit] |
Re: Fragen zu ComboBox und Items
@scp
Hihi war schneller |
Re: Fragen zu ComboBox und Items
Zitat:
|
Re: Fragen zu ComboBox und Items
@Spider, scp
ich danke euch. klappt :thuimb: @Daniel B hol's nach :wink: |
Re: Fragen zu ComboBox und Items
Hallo Dibelius,
schön, dass Du Dich mit Delphi beschäftigen möchtest. Du kannst in Delphi (visuellen) Komponenten so mit Methoden verknüpfen, dass sie beim Eintreten eines bestimmten Ereignisses ausgelöst werden. Wenn Du zB im Formdesigner einen Doppelklick auf einen Button1 machst, wird automatisch eine Methode .Button1Click generiert und mit dem Ereignis Button1.OnClick verknpüft. In Deinem Fall möchtest Du, wenn ich Dich richtig verstanden habe, eine Handlung durchführen, wenn ein Eintrag aus einer Combobox, sagen wir Combobox1, ausgewählt wird. Das ist das Ereignis Combobox1.OnChange. Wenn Du die entsprechende Methode mithilfe des Objektinspektors erzeugst und zuweist, wird sie immer ausgeführt, wenn ein Eintrag der Combobox1 ausgewählt wird. Es gibt kein zweites, drittes oder viertes Ereignis für alle denkbaren Anzahlen von Elementen, die Auswahl eines beliebigen Elements hat das Eregnis OnChange zur Folge. Damit Du unterscheiden kannst, welcher Eintrag ausgewählt wurde, nutze die Eigenschaft ItemIndex (Nutze die ausführliche OH!). Du kannst auch alle OnChange-Ereignisse der Comboboxen mit der selben Methode verknüpfen, musst dann allerdings entscheiden, welche Combobox das Ereigniss ausgelöst hat. Zwar könntest Du mit
Delphi-Quellcode:
jede Komponente abfragen, dies bietet sich idR aber nicht an.
if Sender=Combobox1 then Foo else
if Sender=Combobox2 then Bar else FooBar; Nutze stattdessen den Parameter Sender der Ereignisbehandlungsroutine, sie ist eine Referenz auf das ereignisauslösende Objekt und caste es zu dem Typen, von dem Du ausgehst.
Delphi-Quellcode:
Du solltest vorher jedoch überprüfen, ob es sich bei Sender wirklich um einen adequaten Typ handelt (sieh hierzu in die OH unter "is" und "as" nach).
var
myCombobox: TCombobox; begin myCombobox:= Sender as TCombobox; //Ab hier mit myCombobox arbeiten, statt mit Combobox1, etc. //also zB case myCombobox.ItemIndex of... EDIT: Mist, zu langsam getippt ;) |
Re: Fragen zu ComboBox und Items
ja etwas *g*
trotzdem danke für die Arbeit die ihr euch gemacht habt. klappt jetzt :-D |
Re: Fragen zu ComboBox und Items
:gruebel: mmmh...
sagt mal, ist es möglich, statt der index nummer den index text abzurufen, also im Prinzip eine Index in eine Zeichenkette umzuwandeln (oder so ähnlich :stupid: )? Ich habe gemerkt, dass es praktischer wäre, wenn ich die Items per dem Text abrufen könnte, da ich mit der Zeit immer wieder Items zur ComboBox hinzufügen werde und diese alphabetisch ordne. Das heißt, ich hätte dann einen haufen arbeit damit, die ganzen index nummern wieder zu ändern. Danke schonmal, Greetz Dibi :wink: |
Re: Fragen zu ComboBox und Items
Den Index eines Items bekommst du mit IndexOf
|
Re: Fragen zu ComboBox und Items
ich bin noch noob und :stupid:
also wenn was gepostet wird, dann bitte mit beispielquelltext. aber ich glaub ich hab mich blöd ausgedrückt. also nochmal: 1. ich hab ne ComboBox (die hat meinetwegen 5 Items, also Index 0 - 4) 2. so, dann hab ich nach obigem Beispiel von Spider bzw. scp gescriptet. allerdings mit if, then, else und nicht case ... of. 3. so, und nun will ich aber nicht über den Item Index die 1. Auswahl abrufen können, sondern über den Text von diesem Item ('Item Text 0', 'Item Text 1' ...) |
Re: Fragen zu ComboBox und Items
Hi,
mal ein wenig Beispielcode.
Delphi-Quellcode:
IndexOf zeigt dir den Index des übergebenen Strings an. sollte der String nicht in der Combobox enthalten sein, müsste -1 zurückgegeben werden.
procedure TForm1.Button1Click(Sender: TObject);
begin ShowMessage(IntToStr(ListBox1.Items.IndexOf('Item 0...'))); end; PS: Ein Blick in die Hilfe, hätte vermutlich auch geholfen ;-) |
Re: Fragen zu ComboBox und Items
Natürlich geht das!
Dazu gehört aber auch das man wenisgtens auch nur eine Sekunde lang Sein Hirn einschaltet und sich mal Gedanken macht, zudem mal Beispiele zu if in der OH stehen. Erwarte nicht ständig fertige Code-Blöcke. Und hör auch auf von scripten zu reden, das hört sich an als wenn wir hier so besch...scheidenes Java scripten würden. :roll: :kotz: |
Re: Fragen zu ComboBox und Items
naja, ich raffs nich so ganz. egal!
@Daniel B sorry, wir lernen Delphi gerade mal an der Schule und ich scheine der einzige zu sein, den es überhaupt interessiert. Wozu gibts Foren wenn man nichts fragen darf? |
Re: Fragen zu ComboBox und Items
Du darfst natürlich fragen, aber es wird, jedenfalls bei uns auch erwartet das sich der Fragende auch etwas Mühe gibt und auch slebst Sein Hirn einschaltet, mal die Suche bentuzt, die Lib., steht übrigens auch im Kodex. ;)
Wenn man herkommt und sagt ich will Code, aber selbst hat man nichts geamcht weil zu Faul oder warum auch immer, macht man sich damit nicht gerade Freunde. ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz