Главная страница
    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.049 c
15-1150301630
Gero
2006-06-14 20:13
2006.08.27
DMClient 3 beta_1.2 — новая версия клиента для этого форума


2-1154931678
alles
2006-08-07 10:21
2006.08.27
Можно убрать иконку форме MDIChild?


15-1154285491
Ксардас
2006-07-30 22:51
2006.08.27
Автозаполнение в поисковиках


1-1153075934
1234
2006-07-16 22:52
2006.08.27
Загрузка процессора


6-1133493728
Component TIdNNTP
2005-12-02 06:22
2006.08.27
Indy Как избавиться от зависаний при закачке?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский