Форум: "KOL";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
ВнизВ любом месте области формы по клику мышки срабатывает процедура Найти похожие ветки
← →
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 вся ветка
Форум: "KOL";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c