Pour que la form ne se cache pas sous barre de tache [Résolu]

Signaler
Messages postés
89
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
25 février 2007
-
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
-
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

Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
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
Messages postés
89
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
25 février 2007

Merci beaucoup
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
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
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
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.
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
Loda, trop rapide pour moi, j'allais le dire !
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
Comme quoi, répondre à quelqu'un permet d'enrichir ses propres connaissances !
Merci WhiteHippo, Loda... et JulioDelphi (malgré sa lenteur...lol).

A +
Thierry
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
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.
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
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.
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
@ 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