Вверх ↑
Ответов: 2059
Рейтинг: 132
#1: 2022-04-11 23:03:27 ЛС | профиль | цитата
Компонент Label забыли поправить на счёт Anchors.
unit hiLabel;

interface

uses Kol, Share,Win;

type
  THILabel = class(THIWin)
  private
    procedure SetAutoSize(Value: boolean);
    procedure SetAlignment(Value: TTextAlign);
    procedure SetVerticalAlign(Value: TVerticalAlign);
    procedure _OnClick(Sender: PObj);
  protected
    procedure _onMouseEnter(Sender: PObj); override;
    procedure _onMouseLeave(Sender: PObj); override;
  public
    _event_OnClick: THI_Event;
    _prop_ColorHover: integer;
    _prop_Underline: boolean;
    _prop_Caption: string;
    _prop_CaptionOnClick: boolean;
    _data_Text: THI_Event;

    procedure _work_DoText(var Data: TData; Index: word);
    procedure _work_doAlignment(var Data: TData; Index: word);
    procedure _work_doVerticalAlign(var Data: TData; Index: word);
    procedure _var_Caption(var Data: TData; Index: word);

    constructor Create(Parent: PControl);
    procedure Init; override;
    property _prop_AutoSize: boolean write SetAutoSize;
    property _prop_Alignment: TTextAlign write SetAlignment;
    property _prop_VerticalAlign: TVerticalAlign write SetVerticalAlign;
 end;

implementation

constructor THILabel.Create;
begin
  inherited Create(Parent);
  Control := NewLabel(Parent, 'Label');
  Control.OnClick := _OnClick;
end;

procedure THILabel.Init;
begin
  inherited;
  Control.Caption := _prop_Caption;
  if (_prop_ColorHover ‹› 0) or _prop_Underline then
  begin
    Control.onMouseEnter := _OnMouseEnter;
    Control.onMouseLeave := _OnMouseLeave;
  end;
end;

procedure THILabel._OnClick;
begin
  if _prop_CaptionOnClick then
    _hi_OnEvent(_event_OnClick, Control.Caption)
  else  
    _hi_OnEvent(_event_OnClick);
end;

procedure THILabel._OnMouseEnter;
begin
  inherited;
  if _prop_ColorHover ‹› 0 then
    Control.Font.Color := _prop_ColorHover;
  if _prop_Underline then
    Control.Font.FontStyle := Control.Font.FontStyle + [fsUnderline];
end;

procedure THILabel._OnMouseLeave;
begin
  inherited;
  if _prop_ColorHover ‹› 0 then
    Control.Font.Color := _prop_Font.Color;
  if _prop_Underline then
    Control.Font.FontStyle := Control.Font.FontStyle - [fsUnderline];
end;

procedure THILabel._work_DoText;
begin
  Control.Caption := ReadString(Data, _data_Text);
end;

procedure THILabel._work_doAlignment;
begin
  Control.TextAlign := TTextAlign(ToInteger(Data));
end;

procedure THILabel._work_doVerticalAlign;
begin
  Control.VerticalAlign := TVerticalAlign(ToInteger(Data));
end;

procedure THILabel.SetAlignment;
begin
  Control.TextAlign := Value;
end;

procedure THILabel.SetVerticalAlign;
begin
  Control.VerticalAlign := Value;
end;

procedure THILabel.SetAutoSize;
begin
  Control.AutoSize(Value);
end;

procedure THILabel._var_Caption;
begin
  dtString(Data, Control.Caption);
end;

end.

карма: 6

0
Редактировалось 2 раз(а), последний 2022-04-12 01:29:58