Главная страница
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.039 c
2-1154996217
Василич
2006-08-08 04:16
2006.08.27
Очистить БД через запрос SQL


2-1154962343
ArtemESC
2006-08-07 18:52
2006.08.27
Не найдеться ли у кого функция,


2-1154596391
berezne
2006-08-03 13:13
2006.08.27
Запуск программы


11-1131824315
Владимир
2005-11-12 22:38
2006.08.27
Добрый день, подскажите как в RichEdit добавлять строки


15-1154329986
Nic
2006-07-31 11:13
2006.08.27
Архитектура приложений