Программирование в 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.
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), предназначенную только для вывода текста.
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).
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).
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. Сейчас же будет показано, как можно упростить работу с элементами управления в некоторых частных случаях с помощью специальных функций.