Ombre et Form Modal

Signaler
Messages postés
31
Date d'inscription
vendredi 11 octobre 2002
Statut
Membre
Dernière intervention
8 mars 2007
-
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
-
Bonjour à tous,

il est possible d'ajouter une ombre à une form avec:

procedure CreateParams(var Params: TCreateParams); override;
begin
  Params.WindowClass.style := Params.WindowClass.style or CS_DROPSHADOW;
end;

Oui, mais voilà, l'ombre disparait lorsque la form est modale. Je pensais avoir résolu le problème avec cette source mais elle ne fonctionne pas à 100%. Je m'explique :

soient Form1 et Form2 deux forms et FormShdw la form modal ombrée utilisant la dite source.
Si j'appelle Form2 depuis Form1 et qu'ensuite j'appelle FormShdw de puis Form2, l'illusion est presque parfaite : Form2 est bloquée en attendant que j'en ai fini avec FormShdw. Mais Form1 est toujours accessible, je peux la déplacer, la fermer...

D'où ma question : Comment faire pour avoir une "vraie" fenêtre modale avec son ombre ?

Merci pour votre aide...

[}:)] PhoenyX [}:)]

3 réponses

Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
essai avec fsStayOnTop (et tu simule le ShowModal toi même). Si j'ai bien copris ton problème, ça devrait jouer.
Messages postés
31
Date d'inscription
vendredi 11 octobre 2002
Statut
Membre
Dernière intervention
8 mars 2007

voilà la source que j'avais essayé :

Function TModalDialog.ShowMeModal: TModalResult;
var
  CloseAction: TCloseAction;
begin
  FormStyle := fsStayOnTop;
  Show;
  repeat
    Application.HandleMessage;
    if Application.Terminated then
      ModalResult := mrCancel;

    if ( ModalResult <> mrNone ) then
    begin
      if CloseQuery then
      begin
        CloseAction := caFree;
        DoClose( Closeaction );
        if ( CloseAction = caNone ) then
          ModalResult := mrNone;
      end;
    end;

  until ModalResult <> 0;
  Result := ModalResult;
  Release;
end;

l'utilisation de ce bout de code donne les effets décris plus haut.
Le soucis c'est que ça me donnée une fenêtre "presque" modale qui ne bloque que la fenêtre appelante et non toute l'appli...

si quelqu'un avait un truc...

[}:)] PhoenyX [}:)]
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
hum,

j'ai fait quelques test et j'ai rien trouvé qui puisse t'aider. dsl.

petu-être peut tu tricher avec screen.OnActiveFormChange?

bonne chance.