IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Problème avec Rect [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Problème avec Rect
    Bonjour,

    Lorsque je compile mon programme, j'ai une erreur sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         if PtInRect(Rect(Shape.Left, Shape.Top, Shape.Left + Shape.Width, Shape.Top + Shape.Height), pParent) then
    J'ai l'erreur suivante :
    umain.pas(55,33) Fatal: Syntax error, ")" expected but "," found
    Je ne comprends pas pourquoi ça ne fonctionne pas !

    Merci pour votre aide,
    ZiP

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    pParent est bien un Tpoint ? http://lazarus-ccr.sourceforge.net/d.../ptinrect.html

    J'utilise cette fonction parfois dans des TStringGrids de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure TForm1.StringGrid1MouseDown(Sender : TObject; Button : TMouseButton;
      Shift : TShiftState; X, Y : Integer);
    {uses  LCLintf;}
    var
     P : TPoint;
     Rect : TRect;
    begin
     with StringGrid1 do begin
      Rect.TopLeft := CellRect(FixedCols,FixedRows).TopLeft;       
      Rect.BottomRight := CellRect(ColCount -1, Rowcount -1).BottomRight;
      P.X := X;
      P.Y := Y;
     end;
     if not PtInRect(Rect, P) then Abort;
    end;
    Je suppose qu'on peut le transposer ainsi à votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    {var
     pParent : TPoint;
     Rect : TRect;}
    begin
      Rect.Top := Shape.Top;
      Rect.Bottom :=Shape.Top + Shape.Height;
      Rect.Left := Shape.Left;
      Rect.Right := Shape.Left + Shape.Width; 
     {pParent est un point donc l'abscisse et l'ordonnée doivent avoir été antérieurement définies}
      if not PtInRect(Rect, P) then ...
    end;
    Cordialement. Gilles
    Dernière modification par Invité ; 19/02/2013 à 14h54. Motif: Orthographe

  3. #3
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonsoir,

    Merci selzig, votre proposition fonctionne !

    J'ai testé comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MonRect : TRect;
      MonPoint : TPoint;
    begin
         MonRect.Left := Panel1.Left;
         MonRect.Top := Panel1.Top;
         MonRect.Right := Panel1.Left + Panel1.Width;
         MonRect.Bottom := Panel1.Top + Panel1.Height;
     
         MonPoint.x := 1;
         MonPoint.y := 1;
     
         if PtInRect(MonRect, MonPoint) then
         begin
     
         end;
    end;
    Je vais l'appliquer dans mon code que je suis en train de migrer de Delphi.

    Merci,
    ZiP

  4. #4
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonsoir,

    J'ai trouvé une meilleure solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function Rect(Gauche: Integer; Haut: Integer; Droit: Integer; Bas: Integer): TRect;
    var
         MonRect : TRect;
    begin
         MonRect.Left := Gauche;
         MonRect.Top := Haut;
         MonRect.Right := Droit;
         MonRect.Bottom := Bas;
         Result := MonRect;
    end;
    De cette manière, pas besoin de corriger le code provenant de Delphi.

    ZiP

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Points : 506
    Points
    506
    Par défaut
    La fonction existe déjà dans l'unité Classes : http://www.freepascal.org/docs-html/...sses/rect.html

  6. #6
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    Effectivement, ça fonctionne en ajoutant : "Classes." devant 'Rect" !

    Merci,
    ZiP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec SDL rect
    Par juju116 dans le forum Débuter
    Réponses: 4
    Dernier message: 01/02/2010, 14h29
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo