Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Проблема с TSpeedButton'ом


Автор: Delphist 4.5.2006, 12:16
Возникла следующая проблема:
  На форме лежат два SpeedButton'a, которые объеденены в группу, что даёт возможность при включении одного из них другой выключается.  Но как только в MouseDown я помещаю сообщение(ShowMessage), то получается бред, а именно вместо того, чтобы один из них был нажат, а другой отжат, получаем что они оба нажаты. Как с этим бороться исходники прилагаю. 

Автор: Yanis 4.5.2006, 12:24
Тогда ручками сам "выравнивай" положение состояние кнопок. А OnClick это сделать нельзя? 

Автор: Snowy 4.5.2006, 12:25
Перенеси код в OnMouseUp.

Добавлено @ 12:26 
Просто отжатие происходит по отпусканию кнопки, которого не происходит, т.к. ты вызвал диалог. 

Автор: Delphist 4.5.2006, 12:36
Цитата(Snowy @ 4.5.2006,  12:25)
Перенеси код в OnMouseUp.

Добавлено @ 12:26 
Просто отжатие происходит по отпусканию кнопки, которого не происходит, т.к. ты вызвал диалог.

1) Переносить в MouseUp мне не надо.
2) Можно ли как нибудь с эмулировать отпускание кнопки.

Добавлено @ 12:38 
Цитата(Yanis @ 4.5.2006,  12:24)
Тогда ручками сам "выравнивай" положение состояние кнопок. А OnClick это сделать нельзя?

А как "ручками" выравнивать положение состояние кнопок. 

Автор: Alexeis 4.5.2006, 13:04
Delphist, я попробовал "ручками" выравнять положение, но это привело вообще к тому, что первая кнопка стала глючть.
Код

procedure TForm1.btn1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ShowMessage(' 11');
  btn1.Down := True;
end;

Рисуется нажатой при простом наведении на нее курсора! 

Автор: Delphist 4.5.2006, 13:11
Цитата(alexeis1 @ 4.5.2006,  13:04)
Delphist, я попробовал "ручками" выравнять положение, но это привело вообще к тому, что первая кнопка стала глючть.
...
Рисуется нажатой при простом наведении на нее курсора!

Да ты прав я уже утром попробовал этот способ. 
Так что посоветуешь делать?! 

Автор: Alexeis 4.5.2006, 13:19
Delphist, Боюсь что медицина в этом случае бессильна smile
Придется писать свой новый speedbutton, на основе например TImage, или залезть на torry и поискать альтернативу. 
http://www.torry.net/quicksearchd.php?String=speedbutton&Title=Yes  

Автор: Snowy 4.5.2006, 13:25
А зачем именно OnMouseDown? Почему не OnClick, наконец.
Ты нарушаешь процесс.
Спидбаттон - это не окно. Поэтому обрабатывает событие парент. А он ориентируется по координатам мыши.
Можешь попробовать - нажать на кнопу, не отжимая перевести ее в другое место.
Будет та же хрень. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)