Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Suche Funktion die mir Primärindex zurück gibt

  Alt 10. Jun 2006, 08:25
Zitat von Christian18:
... Diese ComboBox fülle ich mit Daten aus meiner Tabelle Anreden. Um die dritte Normalform nicht zu verletzen, möchte ich nur den Index des Datensatzes in meiner Tabelle Kunden speichern, der in der ComboBox ausgewählt wurde. ...
Hai Christian18,

ich "missbrauche" in solch einem Fall gerne die Delphi-Referenz durchsuchenObjects Eigenschaft von TStrings. Diese ist ja nur ein Pointer. Und da ein Pointer auch nur eine Zahl ist kann ich die ID durch casten auf TObject dort hinterlegen. Beim auslesen muss ich dann nur wieder zurück casten.

Hier einmal ein Beispiel:
Delphi-Quellcode:
procedure TDemoForm.FormCreate(Sender: TObject);
var
  anrede: string;
  id: Cardinal;
begin
  with ADOQuery1 do
  begin
    Close;
    SQL.Text := 'SELECT id, anrede FROM anreden';
    Open;
    while not (eof) do
    begin
      id := FieldByName('id').AsInteger;
      anrede := FieldByName('anrede').AsString;
      cb_anreden.Items.AddObject(anrede, TObject(id)); // Die id wird auf TObject gecastet
      Next;
    end;
  end;
end;

procedure TDemoForm.btn_testClick(Sender: TObject);
var
  id: Cardinal;
begin
  id := Cardinal(cb_anreden.Items.Objects[cb_anreden.ItemIndex]); // Hier wird wieder auf Cardinal gecastet.
  ShowMessageFmt('Die aktuelle Auswahl hat die ID %d', [id]);
end;
Dadurch habe ich die id immer mit einer "Zeile" der Combobox (oder allem anderen was TStrings ist).
Stephan B.
  Mit Zitat antworten Zitat