Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Variablenübergabe bei ComboBoxes (https://www.delphipraxis.net/2789-variablenuebergabe-bei-comboboxes.html)

FlatG 7. Feb 2003 09:22


Variablenübergabe bei ComboBoxes
 
ich will ja nicht nerven, aber wo ihr mir doch so schnell und gut geholfen habt, probier ichs gleich nochmal, schauts a mal was ich hier hab:

Code:
Query1.SQL.Clear;
    Query1.SQL.Add('SELECT * FROM T_Text WHERE (ID_Text_Typ=' + IntToStr(ID_Text_Typ) + ')');
    Query1.Open;
        ComboBox2.Items.Clear;

        while not Query1.Eof do
        begin
            ID_Text := StrToInt(Query1.FieldByName('ID_Text').AsString);
            ID_User := StrToInt(Query1.FieldByName('ID_User').AsString);
            ComboBox2.Items.AddObject(Query1.FieldByName('Name').AsString, TObject(ID_Text));
            Query1.Next;
        end;
    Query1.Close;
ich hab also ne sql abfrage und schreibe dann immer schön alle einträge aus T_Text, wo ID_Text_Typ=ID_Text_Typ ist, in meine ComboBox

da ich noch im anschluss eine weitere funktion ComboBoxchange (onChange-Funktion) habe in der ich ID_Text benötige hab ich das schonmal SELBSTSTÄNDIG mit dem addobject hingekriegt

darüberhinaus bräuchte ich in der folgenden funktion allerdings noch ID_User, die Variable hab ich oben schonmal definiert, weiss nur leider nicht wie ich die auch noch übergeben und dann in der nächsten funktion abfragen könnte :/

gibts vielleicht ne andere möglichkeit unbegrenzt viele variablen mit ner combobox zu übergeben, ohne die direkt in die items zu integrieren?

:coder:

MrSpock 8. Feb 2003 17:18

Hallo FlatG,

du nervst doch nicht :mrgreen: .

Also wenn ich dich richtig verstehe, willst du mehrere Einträge in eine ComboBox eintragen. Items ist ein Objekt der Klasse TStrings. Diese kann pro Eintrag genau einen String und ein beliebiges von TObject abgeleitetes Objekt übernehmen. Wenn du also mehrere Werte übernehmen willst, kannst du eine von 2 möglichen Lösungen wählen:

1. Zu baust den String so zusammen, dass du ihn hinterher wieder auseinander dividieren kannst. (Z.B. durch CommaSeparatedValues [eine Liste von Einträgen, die durch ein Trennzeichen z.B. ";" getrennt wird). Jeder String sieht dann eventuell so aus:
Eintrag1;Eintrag2;Eintrag3

2. Du definierst eine neue Klasse: TMyObjects:
Code:
TMyObjects = class(TObject)
  Eintrag1 : String;
  Eintrag2 : Integer;
  Eintrag3 : String;
  Eintrag4 : Boolean;
end;
Wenn du durch die Query läufst erzeugst du ein neues Objekt dieser Klasse:

Delphi-Quellcode:
NextEntry := TMyObjects.Create(Self);
NextEntry.Eintrag1 := ...
...
NextEntry.Eintrag4 := ...

{ jetzt in die Combobox packen }
ComboBox2.Items.AddObject(Query1.FieldByName('Name').AsString, NextEntry);
Übrigens: bei der ersten Lösung sind alle Ergebnisse sofort in der ComboBox sichtbar, bei der zweiten sind ist das Objekt unsichtbar.

FlatG 12. Feb 2003 10:40

jo danke tschön, habs dank deiner hilfe jetzt tiptop hingekriegt :dancer:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 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