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;