Главная страница
    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.037 c
1-1101114370
highlander
2004-11-22 12:06
2004.12.05
Шифрование и дешифрование текста


3-1100009021
gedd
2004-11-09 17:03
2004.12.05
btr файлы, чем открыть?


8-1094278240
X-Disa
2004-09-04 10:10
2004.12.05
TImgView32 и слои


14-1099590686
ИМХО
2004-11-04 20:51
2004.12.05
Сегодня 2 тур КУБКА УЕФА


1-1100802846
Sniper-Max
2004-11-18 21:34
2004.12.05
Edit и удобный ввод времени... Как это сделать?





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