J'ai creer une form avec un boutton et dans la propriete de boutton j'ai mis sa
*var Rect: TRect;
begin FormStyle := fsStayOnTop;
Left:=Screen.Width-ClientWidth;
SystemParametersInfo(SPI_GETWORKAREA, 0, @Rect, 0);
Top := Screen.Height - (Screen.Height - Rect.Bottom)-100;
ClientHeight := 100; *
J'ai mis sa pour que quand je lance mon projet et j'appyer sur le boutton sa me colle ma form en bas a cote de la barre de tache..
Apres avoir lance ma form, je mis la resoulution 800 par 600 pixels....
Puis quand je remet la resoulution normal... sa me decale la form un peu vers le centre...
Ma question c'est, est ce que c'est possible que quand je chenge de resolution la barre prend sa place normal, c'est a dire bien colle au coin de l'ecran...
Ou il y a une autre methode plus simple...
Rt15, j'étais en contacte par MP avec Cocowz ... il devait m'envoyer son adresse EMail pour renvoyé la source complète
mais il ne la toujours pas fait.
par contre ta méthode est presque la bonne ... je dis presque parce que sur un système à deux écrans selon sur le quel est placé la forme elle risque de disparaitre avec ton code !
je poste donc le code ici et si toute fois tu n'y arrives pas tu me donnes ton Mail pour t'envoyé le source complet :
type TForm1 = class (TForm)
procedure FormCreate(Sender: TObject);
private { Déclarations privées }
procedure WMDisplayChange(var Message:TMessage); message WM_DISPLAYCHANGE;
Procedure ReplaceWindow;
public { Déclarations publiques } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin ReplaceWindow;
end;
procedure TForm1.ReplaceWindow;
begin With Screen.Monitors[Monitor.MonitorNum] Do Begin Self.Left : = Left + (Width - Self.Width);
Self.Top := Top + (Height - Self.Height);
End ;
end;
procedure TForm1.WMDisplayChange(var Message: TMessage);
begin Inherited;
ReplaceWindow;
end;
remplace le par Screen.DesktopHeight et Screen.DesktopWidth
Mais si le programme est executé sur un système à deux écrans ça peut poser problème
dans ce cas on utilise :
Screen.Monitors[0].Width
et
Screen.Monitors[0].Height
Screen.MonitorCount détermine le nombre de moniteurs présents dans le système
Bonjour Cirec,
J'ai teste les deux methodes que tu ma donné et quand je change de resolution et puis je la remet au resolution normal la form se decale comme meme ?
Sinon j'aimera bien de faire pour que sa marche pour les deux ecran...
procedure TForm1.FormCreate(Sender: TObject);
begin
Position := poDesigned;
Left := Monitor.WorkareaRect.Right - Width;
Top := Monitor.WorkareaRect.Bottom - Height;
end;
pour intercepter le message : WM_DISPLAYCHANGE
il faut proceder comme ceci
type TForm1 = class (TForm)
.....
private procedure WMDisplayChange(var Message:TMessage); message WM_DISPLAYCHANGE;
.....
end;
........
procedure TForm1.WMDisplayChange(var Message: TMessage);
begin inherited;
// ici tu fais appel à ta procedure qui ajuste la position de la fenêtre
end;
Non, est fait je voulais demander pour sa
* // ici tu fais appel à ta procedure qui ajuste la position de la fenêtre*
Quelle procedure utiliser ? (mieux)
Je connaissais pas le mot clé Message... C'est vraiment honteusement pratique le Delphi.
Merci.
Pour ce qui est de la procédure... Bin c'est celle qui replace la Form,
autant factoriser. (Bon ça se dicute car on va se bouffer un appel pour
deux ligne...)
Quelque chose comme ça ?
procedure TForm1.FormCreate(Sender: TObject);
begin
AdaptPos(Sender);
end;
procedure TForm1.AdaptPos(Sender: TObject);
begin
Left :=
Screen.Monitors[0].Width
Bonsoir,
Je n'arrive pas a faire pour que la form ne change pas de place....
Pourriez vous me la faire et me l'envoyer car j'ai du mal a comprendre et j'arrive pas..
Merci