Конференция "Основная" » Изменение события OnClick у TButton [D7, Win2k]
 
  • mix (24.01.08 11:36) [0]
    Как изменить событие OnClick у TButton, чтобы оно приходило пока кнопка нажата (как у компонента TUpDown)?
  • KilkennyCat © (24.01.08 11:38) [1]
    никак. обрабатывайте другое событие.
  • {RASkov} © (24.01.08 11:45) [2]
    > [0] mix   (24.01.08 11:36)

    Не все так просто.... Именно у TButton ответ см в [1].
    Другие пути:
    Наследник от TButton'а с внедренным Таймером
    или простой способ: Использовать два стандартных компонента, например TButton и TTimer.
    Не совсем красиво, но ...На МаусДовн кнопки включаем Таймер, а на МаусАп выключаем...
  • KilkennyCat © (24.01.08 11:56) [3]
    Таймер-то зачем???
  • {RASkov} © (24.01.08 12:03) [4]
    > [3] KilkennyCat ©   (24.01.08 11:56)

    Как зачем????
    Ему же нужно нажать мышой кнопку(TButton) и неотпуская ее генерить событие OnClick....
  • mix (24.01.08 12:05) [5]
    Все так. С таймером понял.
    С событием ничего нельзя придумать?
  • clickmaker © (24.01.08 13:02) [6]

    > С событием ничего нельзя придумать?

    OnClick
    while SendMessage(Button1.Handle, BM_GETSTATE, 0, 0) = BST_PUSHED do
    begin
       ...
       Application.ProcessMessages;
    end;
  • mix (28.01.08 09:25) [7]
    Сделал - работает. Спасибо за ответы!
    Но.. Есть одна загвостка..))) Если по кнопке вылетает какое нить окно, допустим с ошибкой, то OnClick благополучно уходит в бесконечный цикл.. Можно конечно поставить try except (обязательно поставлю), но все равно неприятно.
    Есть ли решение этой проблемы??

    P.S. Попробовал проделать тоже самое с TUpDown, получается какой то бред... Кнопка отжимается во время отображения месседжа, но после этого кликая мышкой в любую область формы происходит событие OnClick TUpDown и приложение закрыть невозможно.
  • ketmar © (28.01.08 09:33) [8]
    проверяй, у кого фокус. если фокус потеряли — всё, концерт окончен.
 
Конференция "Основная" » Изменение события OnClick у TButton [D7, Win2k]
Есть новые Нет новых   [134482   +35][b:0][p:0]