Pour que la form ne se cache pas sous barre de tache

Résolu
cocowz Messages postés 89 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 25 février 2007 - 11 févr. 2007 à 20:59
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 - 12 févr. 2007 à 13:05
Bonsoir,
J'ai un truc c'est que quand je lance le projet... puis dans la form je peux choisir la position de ma form (en bas a gauche ou droite ou en haut a gauche ou droite)
Mais quand je met ma form en bas (gauche ou droite), la form se cache un peu. sous la barre de tache...
Comment c'est possible pour faire que la form ne se cache pas... ??
Merci

Le code:
    Case Tag of {et on change la position}
      0 : Begin  // Bottom Right
            Self.Left := Left + (Width - Self.Width);
            Self.Top  := Top + (Height - Self.Height);
      End;
      1 : Begin  // Bottom Left
            Self.Left := Left;
            Self.Top  := Top + (Height - Self.Height);
      End;
      2 : Begin   // Top Right
            Self.Left := Left + (Width - Self.Width);
            Self.Top  := Top;
      End;
      3 : Begin  // Top Left
            Self.Left := Left;
            Self.Top  := Top;

9 réponses

ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
11 févr. 2007 à 22:03
Salut,

Screen.Height renvoie la hauteur de l'écran en pixels, de laquelle tu décomptes les pixels pris par la barre des tâches (+- 30)
Cette valeur moins la hauteur de ta form te donne le point Top à ne pas dépasser.
Form1.Top:= Screen.Height - Form1.Height - 30;
Idéalement, il faudrait une fonction Windows pour connaître la hauteur de la barre des tâches, mais là je ne peux pas t'aider.

A +
Thierry
3
cocowz Messages postés 89 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 25 février 2007
11 févr. 2007 à 22:25
Merci beaucoup
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
11 févr. 2007 à 22:56
Bonsoir,

Pour récupérer la hauteur de la barre des tâches, rien de bien compliqué :

function HauteurBarreDeTache : integer ;
var
  hBarreDeTache : HWND  ;
  R             : TRect ;
begin
  Result := -1 ;
  // Recherche de la fenêtre dont le nom de classe est "Shell_TrayWnd"
  //  qui n'est autre que le nom de la barre des tâches.
  hBarreDeTache := FindWindow( 'Shell_TrayWnd', '' ) ;
  if ( hBarreDeTache <> 0 ) then
  begin
    // Récupération du rectangle représentant la totalité de la barre des tâches
    GetWindowRect( hBarreDeTache, R ) ;
    // Bottom - Top car le 0 se trouve en haut de l'écran
    Result := R.Bottom - R.Top;
  end ;
end ;

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
12 févr. 2007 à 09:38
salut,

je viens juste mettre mon grain de sel:

Delphi help:
Screen.WorkAreaRect

Use WorkAreaRect to determine the coordinates of the usable space on the primary monitor. The usable work space is the surface of the primary monitor with the space occupied by the task bar and any tool bars subtracted off.

cad, partie utile de l'écran princicpal. (sans task bar et autres.)

bon code,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
12 févr. 2007 à 11:43
Loda, trop rapide pour moi, j'allais le dire !
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
12 févr. 2007 à 12:18
Comme quoi, répondre à quelqu'un permet d'enrichir ses propres connaissances !
Merci WhiteHippo, Loda... et JulioDelphi (malgré sa lenteur...lol).

A +
Thierry
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
12 févr. 2007 à 12:26
hehe, lundi matin. fatigué ;o)

A+

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
12 févr. 2007 à 12:29
PS:

je sais pas si ça vas t'aider, mais regarde aussi TCustomForm.ScreenSnap et SnapBuffer (j'ai "découvert" ça un jour que je lisais le forum)

bon code,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
12 févr. 2007 à 13:05
@ Loda : je viens de tester ScreenSnap, cela donne un effet "aimant" un peu comme les prog de mise en page, mais cela n'interdit pas de "sortir de l'écran" si tu continues le déplacement de la form.

A +
Thierry 
0
Rejoignez-nous