Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: TComboboxEx und ItemIndex

  Alt 23. Aug 2005, 12:08
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).
Andreas
  Mit Zitat antworten Zitat