Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
prog:lazarus:components:graphic [06/04/2020 18:39]
thierry [A voir]
prog:lazarus:components:graphic [26/05/2020 19:51] (Version actuelle)
thierry
Ligne 1: Ligne 1:
 ====== Les composants Graphics ====== ====== Les composants Graphics ======
 C'est a dire les composants qui sont dessinés à  l’écran. C'est a dire les composants qui sont dessinés à  l’écran.
-===== A voir =====+===== Le Canvas ​=====
   * [[prog:​lazarus:​classes:​tcanvas|Utilisation de TCanvas]]   * [[prog:​lazarus:​classes:​tcanvas|Utilisation de TCanvas]]
  
 ===== Les ScrollBars ===== ===== Les ScrollBars =====
 +  * [[prog:​lazarus:​components:​scrollbars]]
 +==== Affichage ====
  
 +Affichage : API Windows ShowScrollBar(Handle,​ SB_BOTH, true);
 +  * Handle = Handle du component (TWinControl.handle)
 +  * SB_BOTH = affichage des deux SB_HORZ et SB_VERT
 +  * True = visible
 +
 +==== Capter les messages de Scroll ====
 +
 +
 +Pour capter les scrolling, implementer les procedures suivantes
 +<code delphi>
 +      procedure WMHScroll(var Msg: TLMScroll); message WM_HSCROLL;
 +      procedure WMVScroll(var Msg: TLMScroll); message WM_VSCROLL;
 +</​code>​
 +
 +Le message TLMScroll contient les membres suivants:
 +<code delphi LMessages>​
 + ​TLMScroll = record
 +    Msg: Cardinal;
 +    ...
 +    ScrollCode: SmallInt; // code voir plus bas
 +    SmallPos: SmallInt; ​   // Position sous forme d'un SmallInt
 +    ScrollBar: HWND;        // Handle de la scrollbar
 +    ...
 +    Result: LRESULT; ​       // See remark
 +    Pos: LongInt; ​                // Position en integer
 +  end;      ​
 +</​code>​
 +ScrollCodes
 +<code deplhi defines.inc>​
 +{ Scroll Bar notifications }
 +      SB_LINEUP = 0;
 +      SB_LINEDOWN = 1;
 +      SB_LINELEFT = 0;
 +      SB_LINERIGHT = 1;
 +      SB_PAGEUP = 2;
 +      SB_PAGEDOWN = 3;
 +      SB_PAGELEFT = 2;
 +      SB_PAGERIGHT = 3;
 +      SB_THUMBPOSITION = 4;
 +      SB_THUMBTRACK = 5;
 +      SB_ENDSCROLL = 8;
 +      SB_LEFT = 6;
 +      SB_RIGHT = 7;
 +      SB_BOTTOM = 7;
 +      SB_TOP = 6; 
 +</​code> ​     ​
 +==== Autres fonctions ====
 +<code delphi func.inc>​
 +function SetScrollPos(hWnd:​HWND;​ nBar:​longint;​ nPos:​longint;​ bRedraw:​WINBOOL):​longint;​ external '​user32'​ name '​SetScrollPos';​
 +function GetScrollPos(hWnd:​HWND;​ nBar:​longint):​longint;​ external '​user32'​ name '​GetScrollPos';​
 +function SetScrollRange(hWnd:​HWND;​ nBar:​longint;​ nMinPos:​longint;​ nMaxPos:​longint;​ bRedraw:​WINBOOL):​WINBOOL;​ external '​user32'​ name '​SetScrollRange';​
 +function GetScrollRange(hWnd:​HWND;​ nBar:​longint;​ lpMinPos:​LPINT;​ lpMaxPos:​LPINT):​WINBOOL;​ external '​user32'​ name '​GetScrollRange';​
 +function ShowScrollBar(hWnd:​HWND;​ wBar:​longint;​ bShow:​WINBOOL):​WINBOOL;​ external '​user32'​ name '​ShowScrollBar';​
 +function EnableScrollBar(hWnd:​HWND;​ wSBflags:​UINT;​ wArrows:​UINT):​WINBOOL;​ external '​user32'​ name '​EnableScrollBar';​
 +function GetScrollInfo(hWnd:​ HWND; BarFlag: Integer; var ScrollInfo: TScrollInfo):​ BOOL; external '​user32'​ name '​GetScrollInfo';​
 +function SetScrollInfo(hWnd:​ HWND; BarFlag: Integer; const ScrollInfo: TScrollInfo;​ Redraw: BOOL): Integer; external '​user32'​ name '​SetScrollInfo';​
 +
 +</​code>​
 +
 +
 +
 +===== La Souris =====
 +Pour gerer la souris on peut surcharger les procedures de TControl :
 +<code delphi unit Controls>​
 +  TControl = class(TLCLComponent)
 +  ...
 +  protected
 +    // key and mouse
 +    procedure Click; virtual;
 +    procedure DblClick; virtual;
 +    procedure TripleClick;​ virtual;
 +    procedure QuadClick; virtual;
 +    function GetMousePosFromMessage(const MessageMousePos:​ TSmallPoint):​ TPoint;
 +    procedure MouseDown(Button:​ TMouseButton;​ Shift:​TShiftState;​ X,​Y:​Integer);​ virtual;
 +    procedure MouseMove(Shift:​ TShiftState;​ X,Y: Integer); virtual;
 +    procedure MouseUp(Button:​ TMouseButton;​ Shift:​TShiftState;​ X,​Y:​Integer);​ virtual;
 +    procedure MouseEnter; virtual;
 +    procedure MouseLeave; virtual;
 +    function ​ DialogChar(var Message: TLMKey): boolean; virtual;
 +    procedure UpdateMouseCursor(X,​ Y: integer);
 +
 +</​code>​
  
 ===== Astuces ===== ===== Astuces =====
Ligne 14: Ligne 98:
   screen.height   screen.height
 </​code>​ </​code>​
 +== Dessiner des élément du théme ==
 + voir en bas de cette page -> [[https://​wiki.freepascal.org/​Colors]]
 ===== Sources ===== ===== Sources =====
   * [[http://​docwiki.embarcadero.com/​RADStudio/​Rio/​fr/​Utilisation_des_canevas_pour_dessiner]]   * [[http://​docwiki.embarcadero.com/​RADStudio/​Rio/​fr/​Utilisation_des_canevas_pour_dessiner]]