Форум: "Начинающим";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];
ВнизНаведение мыши в потомке TLabel Найти похожие ветки
← →
Polkin (2009-08-27 12:47) [0]День добрый!
Написал потомка:TCuteLabel = class (TLabel)
private
procedure SelfOnMouseEnter (Sender : TObject);
procedure SelfOnMouseLeave (Sender : TObject);
public
constructor Create (Parent : TWinControl);
end;
constructor TCuteLabel.Create;
begin
inherited Create (Parent);
Self.Parent := Parent;
Self.Cursor := crHandPoint;
Self.Font.Color := $C99B93;
Self.Font.Style := [fsBold];
Self.OnMouseEnter := SelfOnMouseEnter;
Self.OnMouseLeave := SelfOnMouseLeave;
end;
procedure TCuteLabel.SelfOnMouseEnter;
begin
Self.Font.Style := Self.Font.Style + [fsUnderLine];
end;
procedure TCuteLabel.SelfOnMouseLeave;
begin
Self.Font.Style := Self.Font.Style - [fsUnderLine];
end;
А при наведении мышки полосочка под лейблом то не появляется... Почему?
← →
Медвежонок Пятачок © (2009-08-27 12:53) [1]потому что лабел в уже в установленном пакете, а события дорисованы после.
при сборке приложения работает старая версия лэйбла из пакета без этой фичи.
← →
Медвежонок Пятачок © (2009-08-27 12:57) [2]Либо (если дело не в этом) обработчики установленные в конструкторе сбрасываются в Лоадед на нил.
← →
Медвежонок Пятачок © (2009-08-27 13:00) [3]а вообще это жестоко - использовать паблишед свойства предназначенные для пользователей компонента в своих корыстных целях.
← →
Leonid Troyanovsky © (2009-08-27 13:23) [4]
> Polkin (27.08.09 12:47)
> Написал потомка:
> Self.OnMouseEnter := SelfOnMouseEnter;
> Self.OnMouseLeave := SelfOnMouseLeave;
Во-ще-то, для потомка обычно перекрывавают (override)
соответствующие методы. Но, в данном случае, это
не обычные методы, а обработчики сообщений:
{private}
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
И выглядят примерно так:
procedure TCuteLabel.CMMouseEnter(var Message: TMessage);
begin
inherited;
Self.Font.Style := Self.Font.Style + [fsUnderLine];
end;
--
Regards, LVT.
← →
Leonid Troyanovsky © (2009-08-27 13:25) [5]
> Leonid Troyanovsky © (27.08.09 13:23) [4]
> Self.Font.Style := Self.Font.Style + [fsUnderLine];
Мда.. и Self обычно опускают, бо дело происходит в собс-ном методе.
--
Regards, LVT.
← →
clickmaker © (2009-08-27 14:00) [6]> Self.Parent := Parent;
в чем тайный смысл?
← →
Polkin (2009-08-27 14:08) [7]
> Leonid Troyanovsky © (27.08.09 13:23) [4]
Эээхххх.......все равно не работает......наверн связано с тем что весь этот каламбур происходит в dll.
> Медвежонок Пятачок © (27.08.09 13:00) [3]
Можно потом НотифиЕвентами заделать
> Leonid Troyanovsky © (27.08.09 13:25) [5]
Так я пробегаюсь глазами по всему Label"у во всплывающей подсказке ;)
> clickmaker © (27.08.09 14:00) [6]
Без этого на форме у меня Label не появляецо
← →
Leonid Troyanovsky © (2009-08-27 14:10) [8]
> clickmaker © (27.08.09 14:00) [6]
> в чем тайный смысл?
Если внимательно присмотреться, то можно найти еще пару несуразиц:
constructor Create (Parent : TWinControl);
inherited Create (Parent);
Скорее всего, путаница в понятиях Owner vs Parent.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2009-08-27 14:13) [9]
> Polkin (27.08.09 14:08) [7]
> Эээхххх.......все равно не работает......наверн связано
> с тем что весь этот каламбур происходит в dll.
Уж связан наверняка.
А зачем каламбур в длл? Т.е. зачем dll?
--
Regards, LVT.
← →
Leonid Troyanovsky © (2009-08-27 14:18) [10]
> Polkin (27.08.09 14:08) [7]
> Без этого на форме у меня Label не появляецо
Есть конструктор CreateParented,
но, все это лишнее (а в особенности длл).
--
Regards, LVT.
← →
Polkin (2009-08-27 14:26) [11]
> Leonid Troyanovsky © (27.08.09 14:10) [8]
> Leonid Troyanovsky © (27.08.09 14:18) [10]
ХЗ - всю жизнь так создавал, в будущем исправлюсь )
> Leonid Troyanovsky © (27.08.09 14:13) [9]
Ибо плагин )
← →
Медвежонок Пятачок © (2009-08-27 14:28) [12]procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(Format("OnMouseEnter: %p; OnMouseLeave: %p",[@Label1.OnMouseEnter,@Label1.OnMouseLeave]))
end;
← →
Leonid Troyanovsky © (2009-08-27 14:33) [13]
> Polkin (27.08.09 14:26) [11]
> Ибо плагин )
Фигня это, а не плагин.
Либо делать все без VCL, либо с каким-либо COM.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.048 c