Différences
Ci-dessous, les différences entre deux révisions de la page.
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 19:01] thierry [Les ScrollBars] |
prog:lazarus:components:graphic [26/05/2020 19:51] (Version actuelle) thierry |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
===== Les ScrollBars ===== | ===== Les ScrollBars ===== | ||
+ | * [[prog:lazarus:components:scrollbars]] | ||
+ | ==== Affichage ==== | ||
+ | |||
Affichage : API Windows ShowScrollBar(Handle, SB_BOTH, true); | Affichage : API Windows ShowScrollBar(Handle, SB_BOTH, true); | ||
* Handle = Handle du component (TWinControl.handle) | * Handle = Handle du component (TWinControl.handle) | ||
Ligne 10: | Ligne 13: | ||
* True = visible | * 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 18: | 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]] |