Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.45 MB
Время: 0.042 c
1-1153251715
Gloomer
2006-07-18 23:41
2006.08.27
Как перекодировать строку из UTF-8 в ANSI?


2-1154609678
webpauk
2006-08-03 16:54
2006.08.27
TreeView select item


1-1152796491
KygECHuK
2006-07-13 17:14
2006.08.27
Разграничение доступа


4-1146882169
Влад
2006-05-06 06:22
2006.08.27
Диалог выбора цвета


1-1153028556
Chort
2006-07-16 09:42
2006.08.27
RadioGroup





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский