Текущий архив: 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