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

Вниз

В любом месте области формы по клику мышки срабатывает процедура   Найти похожие ветки 

 
algambra   (2005-11-09 11:42) [0]

Создал малую прогу. Вот ее текст.
В любом месте области формы по клику мышки срабатывает процедура BtnOneDown. Через сист. пиктограммы окно закрыть невозможно.

program Pr1;

uses
 Windows,
 Messages,
 KOL;

{$R *.res}
var
 fmMain, BtnOne: PControl;

procedure BtnOneDown(Sender: PControl; var Mouse: TMouseEventData);
begin
 MsgOk("BtnOneDown");
end;

procedure BtnOneClick(Dummy : Pointer; Sender: PControl);
begin
 MsgOk("BtnOneClick");
//  fmMain.Close;
end;

begin
 fmMain:=NewForm(Applet,"First WIndow");
 fmMain.HasBorder:=True;
 fmMain.CanResize:=True;
 fmMain.StatusText[0]:="Example";

 BtnOne:=NewButton(fmMain,"Close");
 BtnOne.Left:=6;
 BtnOne.Top:=4;
 //BtnOne.Shift(6,4);
 BtnOne.OnMouseDown:=TOnMouse( MakeMethod(nil,@BtnOneDown));
 BtnOne.OnClick:=TOnEvent(MakeMethod(nil,@BtnOneClick));
 Run(fmMain);
end.


 
ECM ©   (2005-11-09 12:55) [1]

Не знаю, как на счет остального, но сразу вижу одну ошибку:

procedure BtnOneDown(Dummy: Pointer; Sender: PControl; var Mouse: TMouseEventData);


 
Vladimir Kladov   (2005-11-09 20:28) [2]

да не суть важно - в данном случае. Параметры все равно через регистры передаются. Не используются, и ладно.

Но я не понял вообще, к чму этот пример. Пусть автор использует OnClick - зачем нужен OnMouseDown на кнопке? Кнопка должна быть кнопкой, и - все. Городить какой-то код на все случаи жизни - не в правилах Компактной библиотеки объектов.


 
homm ©   (2005-11-12 11:34) [3]

uses
Windows,
Messages,
KOL;

var
fmMain, BtnOne: PControl;

procedure BtnOneDown(Sender: PControl; var Mouse: TMouseEventData);
begin
MsgOk("BtnOneDown");
end;

begin
fmMain:=NewForm(Applet,"First WIndow");
BtnOne:=NewButton(fmMain,"Close");
BtnOne.OnMouseDown:=TOnMouse( MakeMethod(nil,@BtnOneDown));
Run(fmMain);
end.


algambra прав. Ничего городить не надо. Просто OnDown срабатывет на форме если Button или BitBtn (может еще кто) в фокусе. Попробовал GRushButton - такой косяк не появляется.


 
Vladimir Kladov   (2005-11-12 17:45) [4]

ничего не прав. Он запускает модальный системный диалог по OnMouseDown. В итоге теряется где-то WM_MOUSEUP - не обрабатывается, и система (именно система) считает, что кнопка мыши уже нажата. Исправить можно кликнув правой клавишей мыши, но это неверно вообще - не давать обрабатываться сообщениям. Можно хотя бы postmsg сделать, и уже там свой диалог показывать. Проще работать через OnClick на кнопке.



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

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

Наверх




Память: 0.48 MB
Время: 0.048 c
2-1154938598
Yeg
2006-08-07 12:16
2006.08.27
Drag&Drop файлов из программы


15-1154271463
antonn
2006-07-30 18:57
2006.08.27
Комментарии модератора


2-1154718169
Mr tray
2006-08-04 23:02
2006.08.27
рисование на канвасе объекта класса timage


15-1154543754
X9
2006-08-02 22:35
2006.08.27
Пришлашение Gmail


3-1150872268
Jakudza
2006-06-21 10:44
2006.08.27
Как в QuickReport сделать CrossTab отчет