Einzelnen Beitrag anzeigen

Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#9

Re: Problem mit Combobox.Items.AddObject()

  Alt 27. Mai 2008, 10:31
Derzeit instanzierst du in ComboBox_fuellen nur ein Objekt und hängst dieses an alle Einträge ran. Im FormCreate hingegen erstellst du für jeden Eintrag eine eigene Instanz. Ist das so von dir gewollt?

Ausserdem: Pass doch auch im FormCreate die Schleife für die Datensätze an


Delphi-Quellcode:
procedure ComboBox_fuellen(ComboBox : TVisiComboBox; VddQuery : TVddQuery;
                           Spalten : TStringlist; Tabelle : String);
var i : Integer;
begin

  

  VddQuery.SQL.Clear;
  VddQuery.SQL.Add('Select ');

  for i := 0 to Spalten.Count -1 do
    begin
     VddQuery.SQL.Add(Spalten.Strings[i]+ ', ');
    end;

  VddQuery.SQL.Add('From ' + Tabelle);
  VddQuery.SQL.Add('Order By ' +Spalten[0]);
  VddQuery.Open;
  VddQuery.First;

  While not VddQuery.EoF do
    begin
      PoolData := TPoolData.Create;
      PoolData.var1 := VddQuery.FieldByName(Spalten[1]).asString;
      PoolData.var2 := VddQuery.Fieldbyname(Spalten[0]).asString;
      Combobox.Items.AddObject(VddQuery.FieldByName(Spalten[0]).asString, PoolData);
      VddQuery.Next;
    end;

end;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var id, Bez : String;
begin

  Treibermodule.LoginDialog.Execute;

  VddQuery1.SQL.Clear;
  VddQuery1.SQL.Add('Select * From ADRPOOL');
  VddQuery1.Open;
  VddQuery1.First;

  while not VddQuery1.eof do
    begin
      ID := VddQuery1.FieldByName('ID').asString;
      Bez := VddQuery1.FieldByName('Bezeichnung').asString;

      PoolData := TPoolData.Create;

      PoolData.ID := VddQuery1.FieldByName('ID').asinteger;
      PoolData.Bezeichnung := VddQuery1.Fieldbyname('Bezeichnung').asstring;

      VisiCombobox1.Items.AddObject(Bez + ' ' + ID, PoolData);
      VddQuery1.Next;
    end;

end;
  Mit Zitat antworten Zitat