cs_phoenyx
Messages postés31Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention 8 mars 2007
-
18 sept. 2006 à 10:50
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
19 sept. 2006 à 10:55
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 ?
cs_phoenyx
Messages postés31Date d'inscriptionvendredi 11 octobre 2002StatutMembreDernière intervention 8 mars 2007 19 sept. 2006 à 09:29
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...