Иллюстрированный самоучитель по Delphi 7 для профессионалов

Создание нового компонента на базе элементов управления из библиотеки ComCtl32

function TCustomlPEdit.IsBlank: boolean;
begin
Result: = SendMessage(Handle, IPM_ISBLANK, 0, 0) = 0;
end;
procedure TCustomlPEdit.SetCurrentField(Index: Integer);
begin
if (Index<0) or (Index>3)
then Exit;
FCurrentField: = Index;
SendMessage(Handle, IPM_SETFOCUS, wParam(FCurrentField), 0);
end;
function TCustomlPEdit.IPDwordToString(dw: DWORD): string;
begin
Result: = Format('%d.%d.%d.%d',
[FIRST_IPADDRESS(dw),
SECOND_IPADDRESS(dw),
THIRD_IPADDRESS(dw),
FOURTH_IPADDRESS(dw)]);
end;
function TCustomlPEdit.IPStringToDword(s: string): DWORD;
var i,j: Integer;
NewAddr, Part: DWORD;
begin
NewAddr: = 0;
try
i: = 0; repeat
j: = PosC. ', s); if j<=l then if i<3 then
Abort else
Part: = StrToInt(s) else
Part: = StrToInt(Copy(s, I, j-1));
if Part>255 then Abort; Delete(s, 1, j);
NewAddr: = (NewAddr shl 8) or Part;
Inc(i);
until i>3;
Result: = NewAddr;
//Windows.MessageBox(0, pChar(IntToHex(FIPAddress, 8)), '', MB_Ok);
except end;
end;
function TCustomlPEdit.GetlPString: string;
begin
SendMessage(Handle,IPM_GETADDRESS, 0, longint(SFIPAddress));
Result: = IpDwordToString(FIPAddress);
end;
procedure TCustomlPEdit.SetlPString(Value: string);
begin
FIPAddress: = IPStringToDword(Value);
SendMessage(Handle, IPM_SETADDRESS, 0, FIPAddress);
end;
procedure Register;
begin
RegisterComponents('Samples', [TIPEdit]);
end;
end.

Для удобства пользования полезно было бы добавить к компоненту CustomiPEdit задание диапазона для каждого из четырех составляющих и средства преобразования текстовой строки в двоичный адрес. Но это уже совсем другая история, к библиотеке ComQ132 отношения не имеющая.

Резюме

Элементы управления – поистине неисчерпаемая тема. Надеемся, что читатель воспримет данную главу как руководство к последующему углубленному анализу того или иного элемента в свете стоящих перед ним задач.

С элементами управления вам так или иначе придется сталкиваться во всех последующих главах.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.