![]() |
Items in ComboBox schreiben
Hallo,
In meiner Anwendung gibt es eine Art "Itemmanager", mit dem der Anwender seine eigenen "Inhalte" einfügen kann, um sie nicht immer wieder neu einzutippen. Der soll eigentlich so funktionieren: In meiner ComboBox gibt es Kategorien: "--- Kategorie 1 ---", "--- Kategorie 2 ---". Im OneExit der ComboBox habe ich eine if-Abfrage rein, die erkennt wenn das angwählte Element eine der Kategorien ist, dann leert sie die ComboBox (nur so zur Info ;)). Jetzt zu meiner Frage: Ich habe mir vorgestellt, das es 1 Editfeld und eine ComboBox gibt. Der Anwender schreibt den Itemnamen in das Editfeld und wählt in der ComboBox die Kategorie aus. Aber wie füge ich das Element hinzu? ICh hätte folgendes gemacht:
Delphi-Quellcode:
Aber jetzt die Probleme:
// Achtung, habe ich nicht getestet, war nur 'ne Überlegung, werde es gleich ausprobieren!
ComboBox1.Items.Add(ComboBox1.Items.IndexOf(ComboBoxKategorie) + 1]; 1. Was wenn dort schon etwas steht? Wie richte ich am besten eine Schleife ein, die den Vorgang solange wiederholt, bis dort nichts mehr steht? 2. Gibt es auch eine .SaveToFile-Funktion, iwie muss ich die Items ja auch speichern... Danke Lukas |
AW: Items in ComboBox schreiben
Zitat:
|
AW: Items in ComboBox schreiben
Grundsätzlich sollte man sich folgendes merken:
Eine GUI-Komponente ist ein denkbar schlechter Ort zum Verwalten von Daten. Diese sollten ausschließlich gemäß ihrer Bestimmung verwendet werden. Ein Problem hast du ja selber schon angeführt: Wie speichert man das denn jetzt? Legt man die Verwaltung der Daten so an, dass diese zum Anzeigen ganz toll sind, steht man sich spätestens beim nächsten Schritt (verarbeiten, speichern) schon wieder auf den Füßen. Also die Daten so speichern, dass die Verarbeitung optimal erfolgen kann. Für die Funktionen Anzeige und Speichern erstellt man sich einfach Klassen, die das erledigen. z.B. für das Anzeigen in einer ComboBox
Delphi-Quellcode:
Die Methoden
type
TMyDataToComboBox = class( TComponent ) private fComboBox : TComboBox; fValues : TMyValueList; procedure SetComboBox( Value : TComboBox ); procedure SetValues( Value : TMyValueList ); function GetValue : TMyValue; procedure SetValue( Value : TMyValue ); public property Value : TMyValue read GetValue write SetValue; published property ComboBox : TComboBox read fComboBox write SetComboBox; property Values : TMyValueList read fValues write SetValues; end;
Delphi-Quellcode:
und
SetComboBox
Delphi-Quellcode:
müssen dafür sorgen, dass die ComboBox mit den Werten gefüllt wird.
SetValues
Die Methode
Delphi-Quellcode:
ermittelt den Index des Wertes und setzt den ItemIndex der ComboBox
SetValue
Delphi-Quellcode:
macht das eben andersherum und ermittelt über den ItemIndex der ComboBox den zugehörigen Wert und liefert diesen Wert zurück.
GetValue
Der Lohn der Mühe:
Delphi-Quellcode:
und schon sollten alle Werte in der ComboBox stehen und diese auch auf den aktuellen Wert verweisen.
procedure TForm1.Create( AOwner : TComponent );
begin inherited; MyDataPresenter := TMyDataToComboBox.Create( Self ); MyDataPresenter.ComboBox := ComboBox1; MyDataPresenter.Values := MyValues; MyDataPresenter.Value := MyValue; end; Um die ComboBox jetzt zu aktualisieren reicht dann:
Delphi-Quellcode:
MyValues.Add( MyNewValue );
MyDataPresenter.Values := MyValues; MyDataPresenter.Value := MyNewValue; |
AW: Items in ComboBox schreiben
Jop danke, funktioniert... :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 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