Les composants Graphics

C'est a dire les composants qui sont dessinés à l’écran.

Le Canvas

Les 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:

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;      

ScrollCodes

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; 

Autres fonctions

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';

La Souris

Pour gerer la souris on peut surcharger les procedures de TControl :

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);

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

Vous pourriez laisser un commentaire si vous étiez connecté.