Einzelnen Beitrag anzeigen

hugorantanplan

Registriert seit: 2. Jun 2017
1 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Problem mit Combobox.Items.AddObject() .AddItem()

  Alt 2. Jun 2017, 16:13
Hallo Zusammen,

ich habe ein merkwürdiges Verhalten der Objekte meiner Combobox.Items.

Code:
procedure FillCmb;
var
  myCmb: TComboBox;
begin
  myCmb := TComboBox.Create(nil);

  myCmb.AddItem('Anfrage',     (TObject('AF'))); // string(myCmb.Items.Objects[0]) = 'AF'
  myCmb.AddItem('Angebot',     (TObject('AB'))); // string(myCmb.Items.Objects[0]) = 'AF'
                                                   // string(myCmb.Items.Objects[1]) = 'AB'
  myCmb.AddItem('Auftrag',     (TObject('AG'))); // string(myCmb.Items.Objects[0]) = 'AG'
                                                   // string(myCmb.Items.Objects[1]) = 'AF'
                                                   // string(myCmb.Items.Objects[2]) = 'AG'
  myCmb.AddItem('Lieferschein', (TObject('LS'))); // string(myCmb.Items.Objects[0]) = 'LS'
                                                   // string(myCmb.Items.Objects[1]) = 'AF'
                                                   // string(myCmb.Items.Objects[2]) = 'AF'
                                                   // string(myCmb.Items.Objects[3]) = 'AF'
  myCmb.AddItem('Rechnung',    (TObject('RS'))); // string(myCmb.Items.Objects[0]) = 'RS'
                                                   // string(myCmb.Items.Objects[1]) = 'LS'
                                                   // string(myCmb.Items.Objects[2]) = 'RS'
                                                   // string(myCmb.Items.Objects[3]) = 'LS'
                                                   // string(myCmb.Items.Objects[4]) = 'RS'



end;
Ich kann mir das Verhalten von "string(myCmb.Items.Objects[n]" nicht erklären.

Natürlich ist das erstmal nur ein Beispiel. Der richtige Code sieht in etwa so aus:
Code:
procedure TBelegerfassungF.FillCmbBelegart;
var
  qBelegart: TMSQuery;
begin
  try
    qBelegart := TMSQuery.Create(Self);
    qBelegart.Connection := DM1.MSConnection1;

    qBelegart.SQL.Add('SELECT Kennzeichen, Bezeichnung');
    qBelegart.SQL.Add('FROM ' + DM1.cBelegarten);
    qBelegart.SQL.Add('WHERE BelegArt = 1000 AND IstInitialbeleg = -1');
    qBelegart.SQL.Add('ORDER BY AnzeigeIndex');
    qBelegart.Open;

    cmbBelegart.Items.Clear;
    while not qBelegart.Eof do
    begin
      cmbBelegart.Items.AddObject(qBelegart.FieldByName('Bezeichnung').AsString, TObject((qBelegart.FieldByName('Kennzeichen').AsString)));
      qBelegart.Next
    end;
  finally
    FreeAndNil(qBelegart);
  end;
end;
Torsten
  Mit Zitat antworten Zitat