mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-17 05:51:25 +02:00
398 lines
11 KiB
ObjectPascal
398 lines
11 KiB
ObjectPascal
{ $Id$}
|
|
{
|
|
/***************************************************************************
|
|
CommCtrl.pp
|
|
-------------------
|
|
An interface to Common Controls
|
|
Initial Revision : Tue Mar 26 2002
|
|
|
|
|
|
***************************************************************************/
|
|
|
|
*****************************************************************************
|
|
* *
|
|
* This file is part of the Lazarus Component Library (LCL) *
|
|
* *
|
|
* See the file COPYING.LCL, included in this distribution, *
|
|
* for details about the copyright. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
|
* *
|
|
*****************************************************************************
|
|
}
|
|
{
|
|
@abstract(Just a try to provide the same functions and structs as the)
|
|
@abstract(Delphi commctrl unit)
|
|
@author(Marc Weustink <marc@@dommelstein.net>)
|
|
@created(Tue Mar 26 2002)
|
|
@lastmod($Date$)
|
|
}
|
|
unit CommCtrl;
|
|
|
|
{$mode objfpc}
|
|
{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, lMessages, vclGlobals, LCLType;
|
|
|
|
//-------------
|
|
// Common
|
|
//-------------
|
|
|
|
const
|
|
//all controls
|
|
NM_FIRST = 0;
|
|
NM_LAST = -99;
|
|
|
|
//listview
|
|
LVN_FIRST = -100;
|
|
LVN_LAST = -199;
|
|
|
|
//header
|
|
HDN_FIRST = -300;
|
|
HDN_LAST = -399;
|
|
|
|
//treeview
|
|
TVN_FIRST = -400;
|
|
TVN_LAST = -499;
|
|
|
|
//tooltips
|
|
TTN_FIRST = -520;
|
|
TTN_LAST = -549;
|
|
|
|
//tab control
|
|
TCN_FIRST = -550;
|
|
TCN_LAST = -580;
|
|
|
|
// toolbar
|
|
TBN_First = -700;
|
|
TBN_Last = -720;
|
|
|
|
const
|
|
CCS_TOP = $00000001;
|
|
CCS_NOMOVEY = $00000002;
|
|
CCS_BOTTOM = $00000003;
|
|
CCS_NORESIZE = $00000004;
|
|
CCS_NOPARENTALIGN = $00000008;
|
|
CCS_ADJUSTABLE = $00000020;
|
|
CCS_NODIVIDER = $00000040;
|
|
CCS_VERT = $00000080;
|
|
CCS_LEFT = (CCS_VERT or CCS_TOP);
|
|
CCS_RIGHT = (CCS_VERT or CCS_BOTTOM);
|
|
CCS_NOMOVEX = (CCS_VERT or CCS_NOMOVEY);
|
|
|
|
ICC_LISTVIEW_CLASSES = $00000001;
|
|
ICC_TREEVIEW_CLASSES = $00000002;
|
|
ICC_BAR_CLASSES = $00000004;
|
|
ICC_TAB_CLASSES = $00000008;
|
|
ICC_UPDOWN_CLASS = $00000010;
|
|
ICC_PROGRESS_CLASS = $00000020;
|
|
ICC_HOTKEY_CLASS = $00000040;
|
|
ICC_ANIMATE_CLASS = $00000080;
|
|
ICC_WIN95_CLASSES = $000000FF;
|
|
ICC_DATE_CLASSES = $00000100;
|
|
ICC_USEREX_CLASSES = $00000200;
|
|
ICC_COOL_CLASSES = $00000400;
|
|
ICC_INTERNET_CLASSES = $00000800;
|
|
ICC_PAGESCROLLER_CLASS = $00001000;
|
|
ICC_NATIVEFNTCTL_CLASS = $00002000;
|
|
|
|
|
|
//-------------
|
|
// Toolbar
|
|
//-------------
|
|
const
|
|
TBN_BEGINDRAG = TBN_FIRST-1;
|
|
TBN_ENDDRAG = TBN_FIRST-2;
|
|
TBN_BEGINADJUST = TBN_FIRST-3;
|
|
TBN_ENDADJUST = TBN_FIRST-4;
|
|
TBN_RESET = TBN_FIRST-5;
|
|
TBN_QUERYINSERT = TBN_FIRST-6;
|
|
TBN_QUERYDELETE = TBN_FIRST-7;
|
|
TBN_TOOLBARCHANGE = TBN_FIRST-8;
|
|
TBN_CUSTHELP = TBN_FIRST-9;
|
|
TBN_DROPDOWN = TBN_FIRST-10;
|
|
TBN_CLOSEUP = TBN_FIRST-11;
|
|
TBN_GETOBJECT = TBN_FIRST-12;
|
|
|
|
const
|
|
TBIF_IMAGE = $00000001;
|
|
TBIF_TEXT = $00000002;
|
|
TBIF_STATE = $00000004;
|
|
TBIF_STYLE = $00000008;
|
|
TBIF_LPARAM = $00000010;
|
|
TBIF_COMMAND = $00000020;
|
|
TBIF_SIZE = $00000040;
|
|
|
|
const
|
|
TB_ENABLEBUTTON = WM_USER + 1;
|
|
TB_CHECKBUTTON = WM_USER + 2;
|
|
TB_PRESSBUTTON = WM_USER + 3;
|
|
TB_HIDEBUTTON = WM_USER + 4;
|
|
TB_INDETERMINATE = WM_USER + 5;
|
|
TB_MARKBUTTON = WM_USER + 6;
|
|
TB_ISBUTTONENABLED = WM_USER + 9;
|
|
TB_ISBUTTONCHECKED = WM_USER + 10;
|
|
TB_ISBUTTONPRESSED = WM_USER + 11;
|
|
TB_ISBUTTONHIDDEN = WM_USER + 12;
|
|
TB_ISBUTTONINDETERMINATE= WM_USER + 13;
|
|
TB_ISBUTTONHIGHLIGHTED = WM_USER + 14;
|
|
TB_SETSTATE = WM_USER + 17;
|
|
TB_GETSTATE = WM_USER + 18;
|
|
TB_ADDBITMAP = WM_USER + 19;
|
|
TB_INSERTBUTTONA = WM_USER + 21;
|
|
TB_DELETEBUTTON = WM_USER + 22;
|
|
TB_GETBUTTON = WM_USER + 23;
|
|
TB_BUTTONCOUNT = WM_USER + 24;
|
|
|
|
TB_CUSTOMIZE = WM_USER + 27;
|
|
TB_ADDSTRINGA = WM_USER + 28;
|
|
TB_GETITEMRECT = WM_USER + 29;
|
|
TB_BUTTONSTRUCTSIZE = WM_USER + 30;
|
|
TB_SETBUTTONSIZE = WM_USER + 31;
|
|
TB_SETBITMAPSIZE = WM_USER + 32;
|
|
TB_AUTOSIZE = WM_USER + 33;
|
|
TB_GETTOOLTIPS = WM_USER + 35;
|
|
TB_SETTOOLTIPS = WM_USER + 36;
|
|
TB_SETPARENT = WM_USER + 37;
|
|
TB_SETROWS = WM_USER + 39;
|
|
TB_GETROWS = WM_USER + 40;
|
|
TB_SETCMDID = WM_USER + 42;
|
|
TB_CHANGEBITMAP = WM_USER + 43;
|
|
TB_GETBITMAP = WM_USER + 44;
|
|
TB_REPLACEBITMAP = WM_USER + 46;
|
|
TB_SETINDENT = WM_USER + 47;
|
|
TB_SETIMAGELIST = WM_USER + 48;
|
|
TB_GETIMAGELIST = WM_USER + 49;
|
|
TB_LOADIMAGES = WM_USER + 50;
|
|
TB_GETRECT = WM_USER + 51;
|
|
TB_SETHOTIMAGELIST = WM_USER + 52;
|
|
TB_GETHOTIMAGELIST = WM_USER + 53;
|
|
TB_SETDISABLEDIMAGELIST = WM_USER + 54;
|
|
TB_GETDISABLEDIMAGELIST = WM_USER + 55;
|
|
TB_SETSTYLE = WM_USER + 56;
|
|
TB_GETSTYLE = WM_USER + 57;
|
|
TB_GETBUTTONSIZE = WM_USER + 58;
|
|
TB_SETBUTTONWIDTH = WM_USER + 59;
|
|
TB_SETMAXTEXTROWS = WM_USER + 60;
|
|
TB_GETTEXTROWS = WM_USER + 61;
|
|
TB_GETBUTTONINFOW = WM_USER + 63;
|
|
TB_SETBUTTONINFOW = WM_USER + 64;
|
|
TB_GETBUTTONINFOA = WM_USER + 65;
|
|
TB_SETBUTTONINFOA = WM_USER + 66;
|
|
|
|
TB_GETHOTITEM = WM_USER + 71;
|
|
TB_SETHOTITEM = WM_USER + 72;
|
|
|
|
TB_ADDSTRINGW = WM_USER = 77;
|
|
|
|
|
|
TB_INSERTBUTTON = TB_INSERTBUTTONA;
|
|
TB_ADDSTRING = TB_ADDSTRINGA;
|
|
TB_GETBUTTONINFO = TB_GETBUTTONINFOA;
|
|
TB_SETBUTTONINFO = TB_SETBUTTONINFOA;
|
|
|
|
const
|
|
TBSTATE_CHECKED = $01;
|
|
TBSTATE_PRESSED = $02;
|
|
TBSTATE_ENABLED = $04;
|
|
TBSTATE_HIDDEN = $08;
|
|
TBSTATE_INDETERMINATE = $10;
|
|
TBSTATE_WRAP = $20;
|
|
TBSTATE_ELLIPSES = $40;
|
|
TBSTATE_MARKED = $80;
|
|
|
|
TBSTYLE_BUTTON = $00;
|
|
TBSTYLE_SEP = $01;
|
|
TBSTYLE_CHECK = $02;
|
|
TBSTYLE_GROUP = $04;
|
|
TBSTYLE_CHECKGROUP = TBSTYLE_GROUP or TBSTYLE_CHECK;
|
|
TBSTYLE_DROPDOWN = $08;
|
|
TBSTYLE_AUTOSIZE = $0010;
|
|
TBSTYLE_NOPREFIX = $0020;
|
|
|
|
TBSTYLE_TOOLTIPS = $0100;
|
|
TBSTYLE_WRAPABLE = $0200;
|
|
TBSTYLE_ALTDRAG = $0400;
|
|
TBSTYLE_FLAT = $0800;
|
|
TBSTYLE_LIST = $1000;
|
|
TBSTYLE_CUSTOMERASE = $2000;
|
|
TBSTYLE_REGISTERDROP = $4000;
|
|
TBSTYLE_TRANSPARENT = $8000;
|
|
TBSTYLE_EX_DRAWDDARROWS = $00000001;
|
|
|
|
// Toolbar custom draw result flags
|
|
{Not used yet, but soon}
|
|
TBCDRF_NOEDGES = $00010000; // Don't draw the button edges
|
|
TBCDRF_HILITEHOTTRACK = $00020000; // Use color of the button bk when hottracked
|
|
TBCDRF_NOOFFSET = $00040000; // Don't offset the button if pressed
|
|
TBCDRF_NOMARK = $00080000; // Don't draw the default highlight of the image/text for TBSTATE_MARKED
|
|
TBCDRF_NOETCHEDEFFECT = $00100000; // Don't draw the etched effect for disabled items
|
|
|
|
ToolBarClassName = 'ToolbarWindow32';
|
|
|
|
type
|
|
PTBButton = ^TTBButton;
|
|
_TBBUTTON = packed record
|
|
iBitmap: Integer;
|
|
idCommand: Integer;
|
|
fsState: Byte;
|
|
fsStyle: Byte;
|
|
bReserved: array[1..2] of Byte;
|
|
dwData: Longint;
|
|
iString: Integer;
|
|
end;
|
|
TTBButton = _TBBUTTON;
|
|
|
|
TBBUTTONINFOA = packed record
|
|
cbSize: UINT;
|
|
dwMask: DWORD;
|
|
idCommand: Integer;
|
|
iImage: Integer;
|
|
fsState: Byte;
|
|
fsStyle: Byte;
|
|
cx: Word;
|
|
lParam: DWORD;
|
|
pszText: PAnsiChar;
|
|
cchText: Integer;
|
|
end;
|
|
|
|
TBBUTTONINFOW = packed record
|
|
cbSize: UINT;
|
|
dwMask: DWORD;
|
|
idCommand: Integer;
|
|
iImage: Integer;
|
|
fsState: Byte;
|
|
fsStyle: Byte;
|
|
cx: Word;
|
|
lParam: DWORD;
|
|
pszText: PWideChar;
|
|
cchText: Integer;
|
|
end;
|
|
TBBUTTONINFO = TBBUTTONINFOA;
|
|
|
|
PTBButtonInfoA = ^TTBButtonInfoA;
|
|
PTBButtonInfoW = ^TTBButtonInfoW;
|
|
|
|
PTBButtonInfo = PTBButtonInfoA;
|
|
|
|
TTBButtonInfoA = TBBUTTONINFOA;
|
|
TTBButtonInfoW = TBBUTTONINFOW;
|
|
TTBButtonInfo = TTBButtonInfoA;
|
|
|
|
type
|
|
PTBAddBitmap = ^TTBAddBitmap;
|
|
tagTBADDBITMAP = packed record
|
|
hInst: THandle;
|
|
nID: UINT;
|
|
end;
|
|
TTBAddBitmap = tagTBADDBITMAP;
|
|
|
|
TBADDBITMAP = tagTBADDBITMAP;
|
|
|
|
type
|
|
TBREPLACEBITMAP = packed record
|
|
hInstOld: THandle;
|
|
nIDOld: Cardinal;
|
|
hInstNew: THandle;
|
|
nIDNew: Cardinal;
|
|
nButtons: Integer;
|
|
end;
|
|
PTBReplaceBitmap = ^TTBReplaceBitmap;
|
|
TTBReplaceBitmap = TBREPLACEBITMAP;
|
|
|
|
tagNMTOOLBARA = packed record
|
|
hdr: TNMHdr;
|
|
iItem: Integer;
|
|
tbButton: TTBButton;
|
|
cchText: Integer;
|
|
pszText: PAnsiChar;
|
|
end;
|
|
|
|
tagNMTOOLBARW = packed record
|
|
hdr: TNMHdr;
|
|
iItem: Integer;
|
|
tbButton: TTBButton;
|
|
cchText: Integer;
|
|
pszText: PWideChar;
|
|
end;
|
|
|
|
tagNMTOOLBAR = tagNMTOOLBARA;
|
|
PNMToolBarA = ^TNMToolBarA;
|
|
PNMToolBarW = ^TNMToolBarW;
|
|
PNMToolBar = PNMToolBarA;
|
|
TNMToolBarA = tagNMTOOLBARA;
|
|
TNMToolBarW = tagNMTOOLBARW;
|
|
TNMToolBar = TNMToolBarA;
|
|
|
|
|
|
//-------------
|
|
// Header
|
|
//-------------
|
|
const
|
|
HDN_ITEMCHANGING = HDN_FIRST-0;
|
|
HDN_ITEMCHANGED = HDN_FIRST-1;
|
|
HDN_ITEMCLICK = HDN_FIRST-2;
|
|
HDN_ITEMDBLCLICK = HDN_FIRST-3;
|
|
HDN_DIVIDERDBLCLICK = HDN_FIRST-5;
|
|
HDN_BEGINTRACK = HDN_FIRST-6;
|
|
HDN_ENDTRACK = HDN_FIRST-7;
|
|
HDN_TRACK = HDN_FIRST-8;
|
|
HDN_GETDISPINFO = HDN_FIRST-9;
|
|
HDN_BEGINDRAG = HDN_FIRST-10;
|
|
HDN_ENDDRAG = HDN_FIRST-11;
|
|
|
|
//-------------
|
|
// Listview
|
|
//-------------
|
|
const
|
|
LVN_ITEMCHANGING = LVN_FIRST-0;
|
|
LVN_ITEMCHANGED = LVN_FIRST-1;
|
|
LVN_INSERTITEM = LVN_FIRST-2;
|
|
LVN_DELETEITEM = LVN_FIRST-3;
|
|
LVN_DELETEALLITEMS = LVN_FIRST-4;
|
|
LVN_COLUMNCLICK = LVN_FIRST-8;
|
|
LVN_BEGINDRAG = LVN_FIRST-9;
|
|
LVN_BEGINRDRAG = LVN_FIRST-11;
|
|
|
|
const
|
|
LVIF_TEXT = $0001;
|
|
LVIF_IMAGE = $0002;
|
|
LVIF_PARAM = $0004;
|
|
LVIF_STATE = $0008;
|
|
LVIF_INDENT = $0010;
|
|
LVIF_NORECOMPUTE = $0800;
|
|
|
|
LVIS_FOCUSED = $0001;
|
|
LVIS_SELECTED = $0002;
|
|
LVIS_CUT = $0004;
|
|
LVIS_DROPHILITED = $0008;
|
|
LVIS_ACTIVATING = $0020;
|
|
|
|
LVIS_OVERLAYMASK = $0F00;
|
|
LVIS_STATEIMAGEMASK = $F000;
|
|
|
|
type
|
|
PNMListView = ^TNMListView;
|
|
TNMListView = packed record
|
|
hdr: TNMHDR;
|
|
iItem: Integer;
|
|
iSubItem: Integer;
|
|
uNewState: UINT;
|
|
uOldState: UINT;
|
|
uChanged: UINT;
|
|
ptAction: TPoint;
|
|
lParam: LPARAM;
|
|
end;
|
|
_NM_LISTVIEW = TNMListView;
|
|
NM_LISTVIEW = TNMListView;
|
|
tagNMLISTVIEW = TNMListView;
|
|
|
|
implementation
|
|
|
|
end.
|