Размер шрифта
-
+

Программирование в Delphi. Трюки и эффекты - стр. 28

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) вполне подойдет функция 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).

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

function CreateMemo(x, y, width, height, id: Integer; strInitText: String):HWND;

begin

CreateMemo:=

CreateWindowEx(WS_EX_CLIENTEDGE, 'EDIT', PAnsiChar(strInitText),

WS_CHILD or WS_VISIBLE or ES_AUTOVSCROLL or ES_MULTILINE

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

HMENU(id), hAppInst, nil);

end;


Приведенные здесь функции не претендуют на абсолютную универсальность и гибкость. Они введены для того, чтобы упростить создание элементов управления в тех частных случаях, которые будут приведены далее в примерах этой главы.

Использование элементов управления

Элементы управления, как и все окна, управляются путем отсылки им сообщений. Этим же способом они уведомляют родительские окна о некоторых произошедших событиях (например, выделении элемента в списке, нажатии кнопки и т. д.).

Описание наиболее используемых сообщений для рассматриваемых элементов управления приведено в приложении 3. Сейчас же будет показано, как можно упростить работу с элементами управления в некоторых частных случаях с помощью специальных функций.

Страница 28