Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

А что есть OnClick?   Найти похожие ветки 

 
Ega23 ©   (2004-11-17 15:01) [0]

Кто решает, что это именно клик? Вот есть WM_LBUTTONDBLCLK, WM_LBUTTONDOWN и WM_LBUTTONUP. А где WM_LBUTTONCLK?


 
clickmaker ©   (2004-11-17 15:06) [1]

OnClick - это WM_LBUTTONDOWN + WM_LBUTTONUP


 
Игорь Шевченко ©   (2004-11-17 15:06) [2]


>  А где WM_LBUTTONCLK?


А зачем ? Click считается по отпусканию кнопки, следовательно WM_LBUTTONUP


 
Ega23 ©   (2004-11-17 15:07) [3]

Это понятно. А кто решает в каком интервале оны должны придти? Кто решает - это 2 разных клика или один даблклик?


 
KSergey ©   (2004-11-17 15:11) [4]

Винда решает. Учитывается время и расстояние, на которое сместилась мышь между кликами. Время - точно регулируется в настройках, размер региона - не помню.

Фактически, приходят:

WM_LBUTTONDOWN
WM_LBUTTONUP
WM_LBUTTONDBLCLK

(прошу прощения, если это и так все знают)

PS
Так, стоп: почему Игорь написал, что "Click считается по отпусканию кнопки"? Выходит даюл-кли - все же по нажатию?


 
Игорь Шевченко ©   (2004-11-17 15:11) [5]

Ega23 ©   (17.11.04 15:07) [3]

В Windows есть настройка временного интервала, если в течении его кнопку нажали дважды, то генерируется DblClick. Открываешь панель управления|Мышь и видишь настройку скорости двойного щелчка.


 
Ega23 ©   (2004-11-17 15:26) [6]

Всё, понял.

procedure TControl.WMLButtonDown(var Message: TWMLButtonDown);
begin
 SendCancelMode(Self);
 inherited;
 if csCaptureMouse in ControlStyle then MouseCapture := True;
 if csClickEvents in ControlStyle then Include(FControlState, csClicked);
 DoMouseDown(Message, mbLeft, []);
end;

procedure TControl.WMLButtonUp(var Message: TWMLButtonUp);
begin
 inherited;
 if csCaptureMouse in ControlStyle then MouseCapture := False;
 if csClicked in ControlState then
 begin
   Exclude(FControlState, csClicked);
   if PtInRect(ClientRect, SmallPointToPoint(Message.Pos)) then Click;
 end;
 DoMouseUp(Message, mbLeft);
end;


 
Ega23 ©   (2004-11-17 15:28) [7]

Всё, понял.

procedure TControl.WMLButtonDown(var Message: TWMLButtonDown);
begin
 SendCancelMode(Self);
 inherited;
 if csCaptureMouse in ControlStyle then MouseCapture := True;
 if csClickEvents in ControlStyle then Include(FControlState, csClicked);
 DoMouseDown(Message, mbLeft, []);
end;

procedure TControl.WMLButtonUp(var Message: TWMLButtonUp);
begin
 inherited;
 if csCaptureMouse in ControlStyle then MouseCapture := False;
 if csClicked in ControlState then
 begin
   Exclude(FControlState, csClicked);
   if PtInRect(ClientRect, SmallPointToPoint(Message.Pos)) then Click;
 end;
 DoMouseUp(Message, mbLeft);
end;


 
NAlexey ©   (2004-11-17 16:01) [8]

GetSystemMetrics->SM_CXDOUBLECLK, SM_CYDOUBLECLK


 
Piter ©   (2004-11-17 22:43) [9]

Ega23 ©   (17.11.04 15:26) [6]

угу. Нажатие мышки над кнопкой и ее отпускание считаются за клик (при этом не важно, если мышка покинула пределы кнопки), а вовсе не WM_LBUTTONUP, как говорит Игорь. Можно провести простой эксперимент, нажать левую кнопку мыши над формой, потом перевести курсор на Button, потом отпустить левую кнопку мыши - OnClick не будет...


 
Игорь Шевченко ©   (2004-11-17 22:46) [10]

Забыл я добавить, что при отпускании после нажатия на одним и тем же окном :) Так вы ж поправили, спасибо:)



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

Форум: "Потрепаться";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.039 c
10-1069399394
Юрий
2003-11-21 10:23
2004.12.05
TCorbaConnection возвращает BAD_OPERATION


3-1099983146
denis24
2004-11-09 09:52
2004.12.05
редактирование в гриде


1-1100846847
hgd
2004-11-19 09:47
2004.12.05
Разрешение экрана


14-1100518286
fag2000
2004-11-15 14:31
2004.12.05
Подскажите софтитну для записи на диск музыки с интернет радио.


14-1100502667
AlexG
2004-11-15 10:11
2004.12.05
Кто использует Windows Messenger?





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