Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

SpeedButton Handle   Найти похожие ветки 

 
Вадим ©   (2004-12-14 00:27) [0]

Понадобилось как-то из проги нажать спидбатон. Именно нажать, а не вызвать её процедуру OnClick. Решил я послать ей PostMessage типа wm_LButtonDown а потом wm_LButtonUp, НО оказалось, что спидбатон не имеет хендла! Как это может быть и что делать?


 
Anatoly Podgoretsky ©   (2004-12-14 00:34) [1]

TGraphicsControl


 
Yanis ©   (2004-12-14 00:48) [2]

Пояснение к [1] :)
SpeedButton наследник от TGraphicsControl.


 
Ihor Osov'yak ©   (2004-12-14 01:07) [3]

хендл в VCL имеют только потомки от TWinControl, то есть классы, инкапсулирующие "надстройки" над оконными объектами  в терминологии Windows..  Не оконные классы с точки зрения взаимодействия с ними ОС вообще не существуют, то есть речб о "нажатии"  на них вообще быть не может. Скажете "а я же кликаю мышкой по спидбатону"? C точки зрения виндовс Вы кликаете по окну паренту, содержащему соотв. "безоконный" компонент.. А этот парент уже сам понимает, что нужно вызвать соотв. метод соотв. безоконника.. (См. TConrol.Perform)
То есь в Вашем случае нужно либо иммулировать клик по соотв. области парента, либо вызивать Perform от спидбатона с соотв. параметрами..


 
Ihor Osov'yak ©   (2004-12-14 01:13) [4]

кстати, TSpeedButton.Click никто тоже не отменял..


 
Юрий Зотов ©   (2004-12-14 01:39) [5]

> Вадим ©   (14.12.04 00:27)  

> Решил я послать ей PostMessage типа wm_LButtonDown а потом
> wm_LButtonUp

SpeedButton1.Down := True;
SpeedButton1.Down := False;

:о)


 
Ihor Osov'yak ©   (2004-12-14 01:58) [6]

2 [5] Юрий Зотов ©   (14.12.04 01:39)

Оригинально :-). Но следуя своей привычке все, что можно проверять, посмотрел исходники TSpeedButton.SetDown... Зародились смутные подозрения..
Соорудил маленькое тестовое приложение..

type
 TForm1 = class(TForm)
   SpeedButton1: TSpeedButton;
   BitBtn1: TBitBtn;
   procedure SpeedButton1Click(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 Caption := "11";
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 SpeedButton1.Down := true;
 SpeedButton1.Down := false;
end;

end.


Так вот, при клике на BitBtn1 Caption формы не изменился...
Подозрения все же оснообоснованы...


 
murtix   (2004-12-14 07:13) [7]

SpeedButton1.Perform(WM_LBUTTONDOWN, 0, 0);
SpeedButton1.Perform(WM_LBUTTONUp, 0, 0);
работает стопроцентно


 
Вадим ©   (2004-12-17 00:51) [8]

Извиняюсь за молчание - Инет рубанулся...
Просто хотел поблагодарить за помощь. Очень здорово, когда получаешь квалифицированый и исчерпывающий ответ на поставленный вопрос.


 
Юрий Зотов ©   (2004-12-17 03:05) [9]

> Ihor Osov"yak ©   (14.12.04 01:58) [6]

> при клике на BitBtn1 Caption формы не изменился...

И не должен был меняться. Не зря же смайлик стоял.
:о)


 
Ihor Osov'yak ©   (2004-12-17 03:27) [10]

2 [9] Юрий Зотов ©   (17.12.04 03:05)

>  Не зря же смайлик стоял.

Ох Вы, Юрий, и жук. Всегда выкрутитесь. :-).



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.075 c
1-1106724799
Zloy
2005-01-26 10:33
2005.02.06
Как получить список файлов из определенного каталога


14-1106020502
Чеширский_Кот
2005-01-18 06:55
2005.02.06
"Губит людей не пиво...


6-1101480819
User1
2004-11-26 17:53
2005.02.06
Помогите c конвертированием строки


1-1106146857
BaDeVlad
2005-01-19 18:00
2005.02.06
Как поменять текущий Screen-Saver в системе?


1-1106278221
Александр1
2005-01-21 06:30
2005.02.06
Работа с Word2003