Содержание материала

 

Когда метка (label) создана, то она в свою очередь создаёт edit box и устанавливает несколько обработчиков событий для него. Фактически, если пользователь кликает по метке, то фокус перемещается на (невидимый) edit box, и мы используем его события для обновления метки. Обратите внимание на ту часть кода, которая подражает фокусу для метки (рисует прямоугольничек), основанная на API функции DrawFocusRect:

Code:

constructor TInputLabel.Create (AOwner: TComponent);

begin

inherited Create (AOwner);

 

MyEdit := TEdit.Create (AOwner);

MyEdit.Parent := AOwner as TForm;

MyEdit.Width := 0;

MyEdit.Height := 0;

MyEdit.TabStop := False;

MyEdit.OnChange := EditChange;

MyEdit.OnExit := EditExit;

end;

 

procedure TInputLabel.WMLButtonDown (var Msg: TMessage);

begin

MyEdit.SetFocus;

MyEdit.Text := Caption;

(Owner as TForm).Canvas.DrawFocusRect (BoundsRect);

end;

 

procedure TInputLabel.EditChange (Sender: TObject);

begin

Caption := MyEdit.Text;

Invalidate;

Update;

(Owner as TForm).Canvas.DrawFocusRect (BoundsRect);

end;

 

procedure TInputLabel.EditExit (Sender: TObject);

begin

(Owner as TForm).Invalidate;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить