Конференция "Компоненты" » Параметр Sender в OnClick
 
  • Чайник © (26.09.06 00:26) [0]
    Подскажите, 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 передается не ссылка на саму кнопку, а ссылка на ее владельца, т.е. форму, групбокс и т.п.
  • Сергей М. © (26.09.06 09:38) [1]

    > в качестве параметра Sender передается не ссылка на саму
    > кнопку, а ссылка на ее владельца, т.е. форму, групбокс и
    > т.п.


    Значит твоя кнопка по той или иной причине не получает фокус.
  • Чайник © (26.09.06 11:04) [2]
    А по каким причинам компонент от TCustomControl может не получать фокус?
    Или я должен вручную его устанавливать (например ловя события CM_MouseEnter) ?
  • Игорь Шевченко © (26.09.06 11:30) [3]

    > При помещении кнопки на форму при вызове метода Click в
    > качестве параметра Sender передается не ссылка на саму кнопку,
    >  а ссылка на ее владельца, т.е. форму, групбокс и т.п.


    А можно примерчик ? Несильно сложный.
    Поскольку в Controls.pas обработчик FOnClick вызывается с параметром Self контрола, то любопытно, как можно добиться указанного эффекта не переписав метод Click...
  • Чайник © (26.09.06 12:16) [4]

    > Игорь Шевченко ©   (26.09.06 11:30) [3]
    >
    >
    > А можно примерчик ? Несильно сложный.
    > Поскольку в Controls.pas обработчик FOnClick вызывается
    > с параметром Self контрола, то любопытно, как можно добиться
    > указанного эффекта не переписав метод Click


    Прошу прощения, исчезну на некоторое время - побежал к студентам сеять разумное, доброе, вечное. Доберусь до компутера только дома, вечером
  • ProgRAMmer Dimonych (27.09.06 18:04) [5]
    Насчёт фокуса: помнится свойства TabOrder и TabStop надо добавлять...
  • имя (21.03.07 21:33) [6]
    Удалено модератором
  • имя (22.03.07 14:49) [7]
    Удалено модератором
  • имя (23.03.07 02:12) [8]
    Удалено модератором
  • имя (23.03.07 07:14) [9]
    Удалено модератором
  • имя (23.03.07 07:23) [10]
    Удалено модератором
  • DimaBr (23.03.07 16:27) [11]

    > Значит твоя кнопка по той или иной причине не получает фокус.

    что вы несёте. Например TSpeedButton вообще ничо не знает о фокусе, одноко прекрасно работает.
    Такая ситуация возможна если вы сами того захотели, например

    type
    TivaCustomGradientControl = class(TCustomControl)
    ...
    public
      procedure Click; override;
    ...
    end;

    constructor TivaCustomGradientControl.Click;
    begin
    if Assigned(OnClick) then OnClick(Parent);
    end;

  • имя (23.03.07 23:47) [12]
    Удалено модератором
  • имя (24.03.07 16:25) [13]
    Удалено модератором
  • имя (24.03.07 16:31) [14]
    Удалено модератором
  • имя (25.03.07 03:43) [15]
    Удалено модератором
 
Конференция "Компоненты" » Параметр Sender в OnClick
Есть новые Нет новых   [134427   +38][b:0][p:0.001]