Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ListBox - "OnChange" gesucht (https://www.delphipraxis.net/204657-listbox-onchange-gesucht.html)

Hobbycoder 17. Jun 2020 10:25

AW: ListBox - "OnChange" gesucht
 
Zitat:

Zitat von NicoleWagner (Beitrag 1467528)
@Hobbycoder: Danke für den Code!
Der ist aber fein!
Im Grunde hätte ich den am Anfang gebraucht. Denn was Du so elegant in eine Hülle packst, löste ich im Laufe der sich ergebenden Bedürfnisse mit StringLists, Methodenklassen uam.
Werde das Ding einmal in meine Code-Schnipsel-Bibliothek legen.

Sollte hier jemand eines Tages nach Listboxen suchen, dann hoffe ich, dass es dieses Link noch gibt, das mir viel half:
http://www.tech-ecke.de/index_querei...i/tlistbox.htm

Immer wieder gerne. Freut mich dir geholfen zu haben. Ist nichts außergewöhnliches.
Ob das nun in die Code-Schnipsel-Bibliothek muss....kann ich nicht beurteilen.
Ich wollte dir damit eines verdeutlichen: Trenne immer GUI von den Daten. Sicherlich kommt man, aus Bequemlichkeit, ab und an in die Versuchung eine sehr kleine Datenstruktur mal in der GUI zu halten. Aber leider rächt sich sowas oftmal irgendwann, wenn das Programm und die Datenstrukturen wachsen.
Weiterhin ist die Wiederverwendbarkeit der Algorithmen an anderen Programmstellen ein wichtiger Aspekt. Aber auch das Debugging gestaltet sich durchweg einfacher, weil man ganz klare Bereiche hat wo man Fehler such muss.
Die Trennung hat zusätzlich den großen Vorteil, dass man auch die direkte Datenmanipulation mittels Private, Public, etc. sehr schön einschränken oder freigeben kann. Heißt, du kannst z.B. durch die Setter bereits vor dem Schreiben eine Variable die Daten auf Plausibilität prüfen und somit auch bestimmte Fehler von vorne herein ausschließen.

Eine Erweiterung der Datenstruktur ist ebenfalls einfacher. Einfach eine neue Property hinzufügen z.B.
Delphi-Quellcode:
property speed: Integer;
dann [STRG]+[Shift]+C und private Variable und Setter werden automatisch erstellt.

Und, was vielleicht für dich noch interessant ist: Du kannst mittels der Events auch gleich Daten an deine GUI mit übergeben.
Beispiel:
Delphi-Quellcode:
Type
  TDataAdd=procdure(Sender: TObject; NewName: string; NewFarbe: TColor; NewAge: Integer) of object;

  TData=class
  private
    FOnDataAdd: TDataAdd;
    procedure DoDataAdd(NewName: string; NewFarbe: TColor; NewAge: integer);
  published
    property OnDataAdd: TDataAdd read FOnDataAdd write FOnDataAdd;
  end;

implementation

TData.DoDataAdd(NewName: string; NewFarbe: TColor; NewAge: integer);
begin
  if Assigned(FOnDataAdd) then
    FOnDataAdd(self, NewName, NewFarbe, NewAge);
end;

TData.IrgendeineMethode;
begin
  //diese Methode wird von irgendwoher aufgerufen
  //und gibt über des Event seine Daten mit
  DoDataAdd(self.FName, self.FFarbe, self.FAge);
end;
Solche Event kannst du nach Belieben definieren und nutzen. Ich hoffe das hilft dir das ganze noch etwas zu "verfeinern".


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.
Seite 2 von 2     12   

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