Combobox - SETITEMDATA:

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Combobox - SETITEMDATA:

Beitrag von Vbxler »

Frage zu Combobox - TObject:

ich möchte Daten aus einer Datenbank auslesen, in der Combobox anzeigen,
aber zu jedem Item (Kundennamen) ein CB_SETITEMDATA (ID des Datensatzes in der Datenbank), in Form eines Integerwertes speichern:

Code: Alles auswählen

    cboKunde.Items.AddObject('Eintrag 00', TObject(12));
    cboKunde.Items.AddObject('Eintrag 01', TObject(22));
    cboKunde.Items.AddObject('Eintrag 02', TObject(2));
    cboKunde.Items.AddObject('Eintrag 03', TObject(112)); 
Die Item werden richtg dargestellt

1) Darf ich das so machen?
2) Und wenn ja, wie komme ich bei einer Auswahl des Item wieder an den Wert des Objektes?
Ich schaffe es nicht bei der Auswahl von 'Eintrag 02' wieder den Wert 2 zu kommen.

Danke für Eure Hilfe.
Vbxler
-------------------------

Benutzeravatar
theo
Beiträge: 10899
Registriert: Mo 11. Sep 2006, 19:01

Re: Combobox - SETITEMDATA:

Beitrag von theo »

Kann man machen, aber man muss sich klar darüber sein, dass die Länge des "missbrauchten Pointers" bei 32 und 64bit unterschiedlich ist.

Code: Alles auswählen

procedure TForm1.cboKundeCloseUp(Sender: TObject);
begin
  if cboKunde.ItemIndex>-1 then
    Caption:=Inttostr(PtrInt(cboKunde.Items.Objects[cboKunde.ItemIndex]));
end;       

Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Re: Combobox - SETITEMDATA:

Beitrag von Vbxler »

Danke theo,

das funktioniert bestens.
Gäbe es vielleicht eine bessere Lösung wie ich bei FPC ItemData eintragen könnte?

Ich vermute, dass mit der jetzigen Lösung viel an Speicher verbraucht wird.
Vbxler
-------------------------

Benutzeravatar
theo
Beiträge: 10899
Registriert: Mo 11. Sep 2006, 19:01

Re: Combobox - SETITEMDATA:

Beitrag von theo »

Vbxler hat geschrieben: Gäbe es vielleicht eine bessere Lösung wie ich bei FPC ItemData eintragen könnte?
Diese Frage verstehe ich nicht.

Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Re: Combobox - SETITEMDATA:

Beitrag von Vbxler »

Ich mein:

Gäbe es vielleicht eine Bessere oder eine Andere oder ressourcenschonendere Lösung wie ich bei FPC ItemData eintragen könnte?
Oder ist dies die einzige Lösung.
Vbxler
-------------------------

Benutzeravatar
theo
Beiträge: 10899
Registriert: Mo 11. Sep 2006, 19:01

Re: Combobox - SETITEMDATA:

Beitrag von theo »

Vbxler hat geschrieben:Ich mein:

Gäbe es vielleicht eine Bessere oder eine Andere oder ressourcenschonendere Lösung wie ich bei FPC ItemData eintragen könnte?
Oder ist dies die einzige Lösung.
Ich weiss nicht was du mit FPC Itemdata meinst, aber das geht schon so. Du benötigst ja nur den Pointer.
Vllt. verstehe ich deine Frage aber auch immer noch nicht.

Antworten