2009-04-24 6 views
2

S'il vous plaît expliquer la différence entre:Problème réglage parented nouveau formulaire dans DLL

ChildForm := TForm.CreateParented(AOwner) 

ChildForm := TForm.CreateParentedControl(AOwner) 

ChildForm := TForm.Create(AOwner); 
ChildForm.ParentWindow := AOwner.Handle 

Cet exemple peut être compliqué et alambiqué, je voudrais vraiment comme une vue d'ensemble quand les gens utilisent les différents types de méthodes Créer pour les formulaires. L'aide de Delphi 7 me dit que je devrais utiliser CreateParented (AOwner.Handle) et ParentWindow: = AOwner.handle avec des contrôles non-VCL ou à travers les DLL. Jusqu'à hier, je viens de définir Parent: = AOwner, et je n'ai absolument aucune idée pourquoi cela a cessé de fonctionner.

(Peut-être que j'ai juste besoin de redémarrer mon ordinateur)

+1

Pourriez-vous peut-être trouver un meilleur titre de question? (À moins que cela ne fasse partie de votre campagne pour obtenir des commentaires négatifs.) – mghie

+0

Bon point, mais non cela a marqué la campagne –

Répondre

4

Nous avons des composants. Ce sont des éléments visibles ou invisibles sur un formulaire ou un module de données. Chaque composant peut avoir un propriétaire responsable de la destruction éventuelle. S'il n'y a pas de propriétaire, vous devez vous occuper de la destruction vous-même.

Nous avons des contrôles, qui sont des composants visibles. Ils ont aussi un parent qui contient le contrôle. Par exemple, un Panel est le parent d'un bouton sur ce panneau.

Nous avons également WinControls qui sont des contrôles qui se lient aux objets Windows. Ils ont aussi un handle de la fenêtre parent.

Alors:

  1. constructeur TMyControl.CreateParented CreateParented (ParentWindow: HWnd);

    Ceci est utilisé pour créer un contrôle à partir duquel la fenêtre parent est fournie par un descripteur. Il crée le contrôle sans propriétaire et définit la parentwindow sur ParentWindow.

  2. TMyControl.CreateParentedControl class function CreateParentedControl (ParentWindow: HWND): TWinControl;

    Crée le contrôle, sans propriétaire, définit la parentwindow à ParentWindow et renvoie it.

  3. TMyControl.Create (AOwner: TComponent)

    Crée un contrôle avec le propriétaire mis à AOwner.

  4. TMyControl.ParentWindow: = AOwner.Handle;

    Définit la parentwindow (poignée) à la poignée de AOwner.