-
Подскажите, please, что-то сам никак не пойму. Создаю кнопку : type
TivaCustomGradientControl = class(TCustomControl)
...
public
constructor Create(AOwner : TComponent); override;
...
published
...
property OnClick;
end;
constructor TivaCustomGradientControl.Create(AOwner: TComponent);
begin
inherited;
FColorBegin := ColorToRGB(clBtnHighlight);
FColorEnd := ColorToRGB(clBtnShadow);
...
end; Все работает нормально. Но! При помещении кнопки на форму при вызове метода Click в качестве параметра Sender передается не ссылка на саму кнопку, а ссылка на ее владельца, т.е. форму, групбокс и т.п.
-
> в качестве параметра Sender передается не ссылка на саму > кнопку, а ссылка на ее владельца, т.е. форму, групбокс и > т.п.
Значит твоя кнопка по той или иной причине не получает фокус.
-
А по каким причинам компонент от TCustomControl может не получать фокус? Или я должен вручную его устанавливать (например ловя события CM_MouseEnter) ?
-
> При помещении кнопки на форму при вызове метода Click в > качестве параметра Sender передается не ссылка на саму кнопку, > а ссылка на ее владельца, т.е. форму, групбокс и т.п.
А можно примерчик ? Несильно сложный. Поскольку в Controls.pas обработчик FOnClick вызывается с параметром Self контрола, то любопытно, как можно добиться указанного эффекта не переписав метод Click...
-
> Игорь Шевченко © (26.09.06 11:30) [3] > > > А можно примерчик ? Несильно сложный. > Поскольку в Controls.pas обработчик FOnClick вызывается > с параметром Self контрола, то любопытно, как можно добиться > указанного эффекта не переписав метод Click
Прошу прощения, исчезну на некоторое время - побежал к студентам сеять разумное, доброе, вечное. Доберусь до компутера только дома, вечером
-
Насчёт фокуса: помнится свойства TabOrder и TabStop надо добавлять...
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
> Значит твоя кнопка по той или иной причине не получает фокус.
что вы несёте. Например TSpeedButton вообще ничо не знает о фокусе, одноко прекрасно работает. Такая ситуация возможна если вы сами того захотели, например
type
TivaCustomGradientControl = class(TCustomControl)
...
public
procedure Click; override;
...
end;
constructor TivaCustomGradientControl.Click;
begin
if Assigned(OnClick) then OnClick(Parent);
end;
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
|