Thema: Delphi Parent Problem

Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#12

Re: Parent Problem

  Alt 17. Jan 2007, 15:04
Zitat von IngoD7:
Na komm, zum guten Teil aber schon. Wenn die Box wirklich vorausgefüllt sein soll mit irgendwelchen Strings, so muss das im Konstruktor irgendwo passieren, und dazu muss vorher im Konstruktor der Parent mit einem WinControl belegt sein. Meine im Vorposting zuletzt getroffene Aussage ist also nicht falsch.
Ok, nochmal, es geht nicht um ein beliebiges TWinControl. Du erzeugst dyn. ein Panel (ohne weiteren Parent/Owner). Dieses Panel ist ein TWinControl! Du erzeugst jetzt eine Combobox und übergibst im Konstruktor dieses Panel als Owner und setzt es danach auch noch mal per Eigenschaft als Parent und Owner und zur Sicherheit fügst Du auch nochmal mit Panel.insertControl die Combobox ein.
Dann greifst Du auf die Eigenschaft Items zu und eine Exception wird ausgelöst, weil es kein Fenster gibt, dass der Combobox direkt oder über die gesamte Hierachie aller Parents übergeordnet ist.

Damit dieses Problem nicht auftritt musst Du also schauen, ob einer der Parents ein Fenster ist, nochmal als Code:
Delphi-Quellcode:
var b: Boolean;
    control: TWinControl;
begin
  b := false;
  control := Combobox.Parent;
  while (control <> nil) and (not b) do
  begin
    b := control is TForm;
    control := control.Parent;
  end;
  
  // wenn b an dieser Stelle noch false ist,
  // dann hast Du ein Problem
end;
Wichtig ist eben nicht, das ein Parent existiert, sondern das ein Fenster übergeordnet ist.

Hoffe es ist jetzt etwas klarer (ist eine Besonderheit der Combobox).

[EDIT]
Ok, das mit dem visible := false kann natürlich klappen!
[/EDIT]
  Mit Zitat antworten Zitat