![]() |
Anweisungen werden ignoriert ???
Hi Leuts,
ich bins mal wieder, der Anfänger mitd en lästigen Fragen ^^ Diesmal habe ich mal wieder ein Problme mit meinem Adressbuch. Ich habe inerhalb des Tages eine Funktion eingebaut, die dem Benutzer erlaubt, per ComboBox die ANzeige zu ändern. Man hat jetzt die Wahl zwischen "Nachname, Vorname" und "Vorname, Nachname" Hier der Code dazu:
Delphi-Quellcode:
Jetzt gibt es in diesem Adressbucha auch eine Sortier-Funktion:
procedure TForm1.CBAnordnungChange(Sender: TObject);
var i : Integer; begin LBAdressen.Clear; for i := 0 to High(Adressen) do case TComboBox(sender).ItemIndex of 0: begin LBAdressen.Items.Add(Adressen[i].Nachname +','+' '+Adressen[i].Vorname); end; 1: begin LBAdressen.Items.Add(Adressen[i].Vorname+','+' '+Adressen[i].Nachname); end; end; end;
Delphi-Quellcode:
Das Problem ist nur, dass die List, sobald man sie sortiert wieder in die Anfangsanzeige wechselt (also Nachname, Vorname).
procedure TForm1.BtnSortierenClick(Sender: TObject);
var i: Integer; begin LBAdressen.Clear; BubbleSort(Adressen); for i := 0 to High(Adressen) do LBAdressen.Items.Add(Adressen[i].Nachname + ',' + ' ' + Adressen[i].Vorname); end; Meine Idee war, das Programm einfach nach dem Sortieren die ComboBox kontrolieren zu lassen. Sah dann bei mir im Quellcode so aus:
Delphi-Quellcode:
Hat nicht funktioniert !!! ^^
procedure TForm1.BtnSortierenClick(Sender: TObject);
var i: Integer; begin LBAdressen.Clear; BubbleSort(Adressen); for i := 0 to High(Adressen) do LBAdressen.Items.Add(Adressen[i].Nachname + ',' + ' ' + Adressen[i].Vorname); CBAnordnungChange(Sender); end; In meiner grenzenlosen Verzweiflung habe ich dann einfach den kompletten Befehl, welcher im ersten Delphi-Anhang zu sehen ist, in das Sortier-Procedere hineingeschrieben. Und wieder war keine Auswirkung zu sehen ! Da ich mir nicht vorstellen kann, das Delphi-Programme einfach Teile des Quellcodes ignorieren muss es irgendwo ein Problem geben. Da ich es nicht finde hoffe ich auf eure Hilfe. Gruß DutchmanTom |
Re: Anweisungen werden ignoriert ???
Zitat:
|
Re: Anweisungen werden ignoriert ???
Das Problem ist folgendes: Beim OnChange der Combobox greifst du wie folgt auf die Combobox zu:
Delphi-Quellcode:
Hier ist das auch völlig in Ordnung, da normalerweise ja die Combobox der "sender" ist.
case TComboBox(sender).ItemIndex of
Wenn du allerdings nun von dem Button-Event des Sortierens dann diese Funktion aufrufst mit
Delphi-Quellcode:
Dann ist der Sender in der Change-Funktion nicht mehr die Combobox, sondern der Button. Der Typecast, den du mit "TComboBox(sender)" gemacht hast, wird dann ziemlichen Datenmüll liefern, da ein Button keinen ItemIndex hat.
CBAnordnungChange(Sender);
Die einfachste Abhilfe wäre wohl, oben direkt die ComboBox abzufragen, also:
Delphi-Quellcode:
Nebenbei bemerkt kannst du dir beim Sortieren dann auch das Füllen der Liste sparen, da du sie danach ja direkt wieder löschst und neu füllst...
case CBAnordnung.ItemIndex of
Bis denn Bommel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 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