Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Π’Ρ€ΡŽΠΊΠΈ ΠΈ эффСкты». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 9

Автор Π’Π°Π»Π΅Ρ€ΠΈΠΉ Борисок

Листинг 2.8.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π»Π°ΠΆΠΊΠ°

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

caption: String; checked: Boolean):HWND;

var

res: HWND;

begin

res :=

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

WS_VISIBLE or BS_AUTOCHECKBOX 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);

//Π€Π»Π°ΠΆΠΎΠΊ установлСн

CreateCheck := res;

end;

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ функция (листинг 2.9) создаСт ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ. Если Π½ΡƒΠΆΠ½ΠΎ, Ρ‚ΠΎ ΠΎΠ½ устанавливаСтся. Новый ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ, для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ group ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True.

...

Листинг 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).

...

Листинг 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. ΠœΡ‹ ΠΆΠ΅ рассмотрим, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с элСмСнтами управлСния Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… частных случаях, написав для этого ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π˜Ρ‚Π°ΠΊ, Π² дСмонстрационном ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ для управлСния ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈ Ρ„Π»Π°ΠΆΠΊΠ°ΠΌΠΈ прСдусмотрСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (листинг 2.16).

...

Листинг 2.16.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π»Π°ΠΆΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡΠΌΠΈ

//Установка/снятиС Ρ„Π»Π°ΠΆΠΊΠ° (установка/снятиС ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ)

procedure SetChecked(id: Integer; checked: BOOL);

var state: Integer;

begin

if (checked) then state := BST_CHECKED

else state := BST_UNCHECKED;

SendDlgItemMessage(hParentWnd, id, BM_SETCHECK, state, 0);

end;

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, установлСн Π»ΠΈ Ρ„Π»Π°ΠΆΠΎΠΊ

//(установлСн Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ)

function GetChecked(id: Integer):BOOL;

begin

if (SendDlgItemMessage(hParentWnd, id, BM_GETCHECK, 0, 0) =

BST_CHECKED)

then GetChecked := True

else GetChecked := False;

end;

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ листинга 2.17 ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для управлСния элСмСнтом ComboBox.

...

Листинг 2.17.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΡΡ списком

//Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ строки Π² список

procedure AddToCombo(id: Integer; str: String);

begin

SendDlgItemMessage(hParentWnd, id, CB_ADDSTRING, 0,

Integer(PAnsiChar(str)));

end;

//Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ строки ΠΈΠ· списка

procedure DeleteFromCombo(id: Integer; index: Integer);

begin

SendDlgItemMessage(hParentWnd, id, CB_DELETESTRING, index, 0);

end;

//Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строки с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ

procedure SetComboSel(id: Integer; index: Integer);

begin

SendDlgItemMessage(hParentWnd, id, CB_SETCURSEL, index, 0);

end;

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ строки (CB_ERR, Ссли Π½Π΅Ρ‚ выдСлСния)

function GetComboSel(id: Integer): Integer;

begin

GetComboSel := SendDlgItemMessage(hParentWnd, id,

CB_GETCURSEL, 0, 0);

end;

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ количСства строк

function GetComboCount(id: Integer): Integer;

begin

GetComboCount := SendDlgItemMessage(hParentWnd, id,

CB_GETCOUNT, 0, 0);

end;

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ тСкста строки ΠΏΠΎ Π΅Π΅ индСксу

function GetComboItemText(id: Integer; index: Integer):String;

var buffer: String;

begin

SetLength(buffer,

SendDlgItemMessage(hParentWnd, id, CB_GETLBTEXTLEN,

index, 0)

);

SendDlgItemMessage(hParentWnd, id, CB_GETLBTEXT, index,

Integer(Addr(buffer)));

GetComboItemText := buffer;

end;

Π‘Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π² листингС 2.18 ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для управлСния элСмСнтом ListBox.

...

Листинг 2.18.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ списком

//Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ строки Π² список

procedure AddToList(id: Integer; str: String);

begin

SendDlgItemMessage(hParentWnd, id, LB_ADDSTRING, 0,

Integer(PAnsiChar(str)));

end;

//Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ строки ΠΈΠ· списка

procedure DeleteFromList(id: Integer; index: Integer);

begin

SendDlgItemMessage(hParentWnd, id, LB_DELETESTRING, index, 0);

end;

//Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ строки с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ

procedure SetListSel(id: Integer; index: Integer);

begin

SendDlgItemMessage(hParentWnd, id, LB_SETCURSEL, index, 0);

end;

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ строки (LB_ERR, Ссли Π½Π΅Ρ‚ выдСлСния)

function GetListSel(id: Integer): Integer;

begin

GetListSel := SendDlgItemMessage(hParentWnd, id,

LB_GETCURSEL, 0, 0);

end;

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ количСства строк

function GetListCount(id: Integer): Integer;

begin

GetListCount := SendDlgItemMessage(hParentWnd, id,

LB_GETCOUNT, 0, 0);

end;

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ тСкста строки ΠΏΠΎ Π΅Π΅ индСксу

function GetListItemText(id: Integer; index: Integer):String;

var buffer: String;

begin

SetLength(buffer,

SendDlgItemMessage(hParentWnd, id, LB_GETTEXTLEN,

index, 0)

);

SendDlgItemMessage(hParentWnd, id, LB_GETTEXT, index,

Integer(Addr(buffer)));

GetListItemText := buffer;

end;

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ листинга 2.19 Π΄Π°Π΄ΡƒΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ тСкстовыми полями ( Edit ΠΈ Memo).

...

Листинг 2.19.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ тСкстовыми полями

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ символа (нумСрация с нуля)

function GetSelStart(id: Integer): Integer;

var selStart, selEnd: Integer;

begin

SendDlgItemMessage(hParentWnd, id, EM_GETSEL,

Integer(Addr(selStart)),

Integer(Addr(selEnd)));

GetSelStart := selStart;

end;

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° тСкста

function GetSelLength(id: Integer): Integer;

var selStart, selEnd: Integer;

begin

SendDlgItemMessage(hParentWnd, id, EM_GETSEL,

Integer(Addr(selStart)),

Integer(Addr(selEnd)));

GetSelLength := selEnd – selStart;

end;

//Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° тСкста (позиция ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа с нуля)

procedure SetSel(id: Integer; start, length: Integer);

begin

SendDlgItemMessage(hParentWnd, id, EM_SETSEL, start,

start + length);

end;

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° тСкста

function GetSelText(id: Integer): String;

var allText: String;

begin

allText := GetText(id);

GetSelText := Copy(allText, GetSelStart(id)+1,GetSelLength(id));

end;

//Π—Π°ΠΌΠ΅Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ тСкста

procedure ReplaceSelText(id: Integer; newText: String);

begin

SendDlgItemMessage(hParentWnd, id, EM_REPLACESEL,

0, Integer(PAnsiChar(newText)));

end;

Π’ листингС 2.20 приводятся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ успСхом ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎ всСм элСмСнтам управлСния.

...

Листинг 2.20.

ΠžΠ±Ρ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

//Установка тСкста ΠΎΠΊΠ½Π°

procedure SetText(id: Integer; str: String);

begin

SetWindowText(GetDlgItem(hParentWnd, id), PAnsiChar(str));

end;

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ тСкста ΠΎΠΊΠ½Π°

function GetText(id: Integer): String;

var buffer: String;

begin

SetLength(buffer, GetWindowTextLength(hParentWnd));

GetWindowText(hParentWnd, PAnsiChar(buffer), Length(buffer));

GetText := buffer;

end;

//Активизация/дСактивизация ΠΎΠΊΠ½Π°

procedure SetEnabled(id: Integer; fEnabled: BOOL);

begin

EnableWindow(GetDlgItem(hParentWnd, id), fEnabled);

end;

РСакция Π½Π° события элСмСнтов управлСния

ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ прСдусмотрСнного для элСмСнта управлСния события Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΎΠΊΠ½Ρƒ посылаСтся сообщСниС WM_COMMAND.

...

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ WM_COMMAND ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ пСрСрисовкС Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Β«ΡΠ°ΠΌΠΎΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡΒ» (Owner Dr aw) элСмСнтов управлСния. Однако Π²Π²ΠΈΠ΄Ρƒ спСцифики Π΄Π°Π½Π½ΠΎΠ³ΠΎ вопроса ΠΈ ограничСнности объСма Π³ Π»Π°Π²Ρ‹ ΠΌΡ‹ Π΅Π³ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ.