====== Les composants Graphics ======
C'est a dire les composants qui sont dessinés à l’écran.
===== Le Canvas =====
* [[prog:lazarus:classes:tcanvas|Utilisation de TCanvas]]
===== 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
procedure WMHScroll(var Msg: TLMScroll); message WM_HSCROLL;
procedure WMVScroll(var Msg: TLMScroll); message WM_VSCROLL;
Le message TLMScroll contient les membres suivants:
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;
ScrollCodes
{ 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;
==== Autres fonctions ====
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';
===== La Souris =====
Pour gerer la souris on peut surcharger les procedures de TControl :
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);
===== Astuces =====
== Screen ==
L'objet Screen (TScreen) de l'unit Forms, permet de connaitre (entre autre) la taille de l’écran utilisé.
screen.widht
screen.height
== Dessiner des élément du théme ==
voir en bas de cette page -> [[https://wiki.freepascal.org/Colors]]
===== Sources =====
* [[http://docwiki.embarcadero.com/RADStudio/Rio/fr/Utilisation_des_canevas_pour_dessiner]]