2009-06-23 8 views
3

J'ai une boîte de dialogue modale qui est créé avec les éléments suivants:Delphi - Comment contrôle Z Ordre de TOpenDialog

procedure TFormCompose.createParams(var Params: TCreateParams); 
begin 
    inherited createParams(Params); 
    with Params do begin 
      exStyle:=exStyle or WS_EX_APPWINDOW; 
      wndParent:=getDesktopWindow; 
    end; 
end; 

Sous cette forme, je crée une instance de TOpenDialog. Quand il s'ouvre, il envoie ma première boîte de dialogue modale derrière la fenêtre principale de l'application.

Existe-t-il un moyen d'ouvrir TOpenDialog sans affecter l'ordre Z de la boîte de dialogue modale?

Merci!

+1

Puisque vous utilisez Delphi 2007, vous devriez probablement vous débarrasser de votre code qui modifie le parent de la fenêtre. Les versions les plus récentes de Delphi ont résolu les problèmes qui entraînaient généralement la nécessité de manipuler le parent dans les versions antérieures. –

Répondre

5

Quelle version de Delphi utilisez-vous? Delphi 2007 et plus ajoutent un TOpenDialog.Execute surchargé (ParentWnd: HWND); passer le handle de votre boîte de dialogue modale comme ParentWnd lors de l'appel à Execute() peut aider.

Pour référence ultérieure, assurez-vous de spécifier quelle version de Delphi. Les réponses appropriées à Delphi 2009, par exemple, ne vous seraient pas très utiles si vous utilisiez Delphi 5, et ce serait une perte de temps pour la personne fournissant la réponse.

+1

Delphi 2007. Merci de le signaler! –

+1

De rien. :-) –