Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
|
prog:lazarus:components:graphic [05/04/2020 16:46] thierry créée |
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 ===== | ||
| + | * [[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 11: | 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 ===== | ||
| + | * [[http://docwiki.embarcadero.com/RADStudio/Rio/fr/Utilisation_des_canevas_pour_dessiner]] | ||
| + | |||