AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anweisungen werden ignoriert ???

Ein Thema von DutchmanTom · begonnen am 13. Okt 2009 · letzter Beitrag vom 13. Okt 2009
Antwort Antwort
DutchmanTom

Registriert seit: 12. Okt 2009
11 Beiträge
 
#1

Anweisungen werden ignoriert ???

  Alt 13. Okt 2009, 16:46
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:
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;
Jetzt gibt es in diesem Adressbucha auch eine Sortier-Funktion:
Delphi-Quellcode:
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;
Das Problem ist nur, dass die List, sobald man sie sortiert wieder in die Anfangsanzeige wechselt (also Nachname, Vorname).
Meine Idee war, das Programm einfach nach dem Sortieren die ComboBox kontrolieren zu lassen.
Sah dann bei mir im Quellcode so aus:
Delphi-Quellcode:
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;
Hat nicht funktioniert !!! ^^

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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Anweisungen werden ignoriert ???

  Alt 13. Okt 2009, 16:58
Zitat:
Delphi-Quellcode:
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); //Nachname, Vorname
end;
Hier müsstest Du halt noch auswerten, wie die Anzeige erfolgen soll. Allerdings würde ich mir eine Klasse für die Adressen und eine für die Adressliste schreiben, das ist auf Dauer einfacher zu handhaben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bbommel
Online

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#3

Re: Anweisungen werden ignoriert ???

  Alt 13. Okt 2009, 16:59
Das Problem ist folgendes: Beim OnChange der Combobox greifst du wie folgt auf die Combobox zu:

case TComboBox(sender).ItemIndex of Hier ist das auch völlig in Ordnung, da normalerweise ja die Combobox der "sender" ist.

Wenn du allerdings nun von dem Button-Event des Sortierens dann diese Funktion aufrufst mit
CBAnordnungChange(Sender); 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.

Die einfachste Abhilfe wäre wohl, oben direkt die ComboBox abzufragen, also:
case CBAnordnung.ItemIndex of 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...

Bis denn
Bommel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz