Zitat von
dahead:
Ich hab jetzt auch den Fehler/Auslöse gefunden:
Die folgende Zeile sorgt in meiner Lade-Prozedur dafür, dass die Form entweder die zuletzt verwendeten X,Y Koordinaten verwendet, oder aber zentriert (poScreenCenter) ist. So wie es aussieht ist einzig und allein diese Zeile dafür verantwortlich, dass die ComboboxEx ihren ItemIndex verliert:
TForm.Position := poDesigned;
Wenn man nachschaut, was dabei passiert:
Delphi-Quellcode:
procedure TCustomForm.SetPosition(Value: TPosition);
begin
if FPosition <> Value then
begin
FPosition := Value;
if not (csDesigning in ComponentState) then RecreateWnd;
end;
end;
sieht man, dass
RecreateWnd aufgerufen wird.
Dies zerstört das Hauptfenster und alle Childfenster (auch deine ComboBox).
Beim Neuerstellen der ComboBox, ist die Info über den ItemIndex weg, da der ItemIndex an das
Handle der comboBox angebunden war.
Ergo -> das Property [TForm].Position darf zur Laufzeit nicht benutzt werden, wenn das Formular schon sichtbar ist oder schon Controls verändert wurden.
Das hätte Borland auch besser machen können (wäre dann wohl mehr Code geworden).