• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом


  • Иллюстрированный самоучитель по 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, чтобы сообщить об этом редактору.