Вверх ↑
Разработчик
Ответов: 26073
Рейтинг: 2122
#1: 2022-04-12 02:38:22 ЛС | профиль | цитата
flint2 писал(а):
Control := NewLabel(Parent, ' '); // Здесь пробел.

Ну, поставил пробел, и все равно получил то, про что писал



--- Добавлено в 2022-04-12 02:50:52

Попробуй вот такой код (это с моим Win)

unit hiLabel;

interface

uses Kol, Share, Win;

type
THILabel = class(THIWin)
private
fAutosize: boolean;
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 read fAutosize write SetAutoSize;
property _prop_Alignment: TTextAlign write SetAlignment;
property _prop_VerticalAlign: TVerticalAlign write SetVerticalAlign;
end;

implementation

constructor THILabel.Create;
begin
fAutosize := false;
inherited Create(Parent);
Control := NewLabel(Parent, '');
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);
if fAutosize then
begin
fDefTop := Control.Top;
fDefLeft := Control.Left;
fDefRight := Control.Parent.Width - (Control.Left + Control.Width);
fDefBottom := Control.Parent.Height - (Control.Top + Control.Height);
fDefWidth := Control.Width;
fDefHeight := Control.Height;
end;
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);
fAutosize := Value;
end;

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

end.

карма: 22

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