Листинг 2.9.

Создание переключателя

function CreateOption(x, y, width, height, id: Integer;

caption: String; group: Boolean;

checked: Boolean):HWND;

var

res: HWND;

nGroup: Integer;

begin

if (checked) then nGroup := WS_GROUP else nGroup := 0;

res :=

CreateWindow(\'BUTTON\', PAnsiChar(caption), WS_CHILD or

WS_VISIBLE or BS_AUTORADIOBUTTON or nGroup or

WS_TABSTOP, x, y, width, height, hParentWnd,

HMENU(id), hAppInst, nil);

if ((res <> 0) and checked) then

//Переключатель установлен

SendMessage(res, BM_SETCHECK, BST_CHECKED, 0);

CreateOption := res;

end;

Для создания подписанной рамки, группирующей элементы управления, можно воспользоваться функцией CreateFrame, приведенной в листинге 2.10.

...

Листинг 2.10.

Создание рамки

function CreateFrame(x, y, width, height, id: Integer;

caption: String):HWND;

begin

CreateFrame:=

CreateWindow(\'BUTTON\', PAnsiChar(caption), WS_CHILD or

WS_VISIBLE or BS_GROUPBOX, x, y, width, height,

hParentWnd, HMENU(id), hAppInst, nil);

end;

Для того чтобы создать раскрывающийся список (ComboBox), можно использовать функцию CreateCombo из листинга 2.11.

...

Листинг 2.11.

Создание раскрывающегося списка

function CreateCombo(x, y, width, height, id: Integer):HWND;

begin

CreateCombo:=

CreateWindow(\'COMBOBOX\', nil, WS_CHILD or WS_VISIBLE or

CBS_DROPDOWN or CBS_AUTOHSCROLL or WS_TABSTOP,

x, y, width, height, hParentWnd,

HMENU(id), hAppInst, nil);

end;

Для создания простого списка (ListBox) вполне подойдет фyнкцияCreateList из листинга 2.12.

...

Листинг 2.12.

Создание простого списка

function CreateList(x, y, width, height, id: Integer):HWND;

begin

CreateList:=

CreateWindowEx(WS_EX_CLIENTEDGE, \'LISTBOX\', nil, WS_CHILD or

WS_VISIBLE or LBS_NOTIFY or WS_BORDER or

WS_TABSTOP, x, y, width, height,

hParentWnd, HMENU(id), hAppInst, nil);

end;

Функция CreateLabel в листинге 2.13 создает статическую надпись (Label), предназначенную только для вывода текста.

...

Листинг 2.13.

Создание надписи

function CreateLabel(x, y, width, height, id: Integer;

caption: String):HWND;

begin

CreateLabel:=

CreateWindow(\'STATIC\', PAnsiChar(caption), WS_CHILD or

WS_VISIBLE, x, y, width, height, hParentWnd,

HMENU(id), hAppInst, nil);

end;

Однострочное текстовое поле с привычной рамкой создается функцией CreateEdit (листинг 2.14).

...

Листинг 2.14.

Создание однострочного текстового поля

function CreateEdit(x, y, width, height, id: Integer;

strInitText: String):HWND;

begin

CreateEdit:=

CreateWindowEx(WS_EX_CLIENTEDGE, \'EDIT\',

PAnsiChar(strInitText), WS_CHILD or

WS_VISIBLE or ES_AUTOHSCROLL or WS_TABSTOP,

x, y, width, height, hParentWnd,

HMENU(id), hAppInst, nil);

end;

Создание многострочного текстового поля (Memo) отличается от создания однострочного поля только указанием дополнительного флага ES_MULTILINE (листинг 2.15).

...
Перейти на страницу:

Похожие книги