Двойной клик правой мыши
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 340
- Зарегистрирован: 22 ноя 2004, 19:15
- Откуда: Минск
- Контактная информация:
Как перехватить двойной клик по компоненту.
Скажем по TButton
Скажем по TButton
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
А смысл этого? если он не объявлен его и не происходит, а вообще в buttonClick пишешь к примеру Enabled := false;
Ну это как вариант или же опиши конкретней зачем где и куда тебе надо прервать...
Ну это как вариант или же опиши конкретней зачем где и куда тебе надо прервать...
[syntax=Delphi] [/syntax]
-
- Сообщения: 340
- Зарегистрирован: 22 ноя 2004, 19:15
- Откуда: Минск
- Контактная информация:
[quote="Duncon"]А смысл этого? если он не объявлен его и не происходит, а вообще в buttonClick пишешь к примеру Enabled := false]
в дбгрид если щелкаешь 2 раза левой то одна процедура если 2 раза правой то другая процедура должна вызываться
в дбгрид если щелкаешь 2 раза левой то одна процедура если 2 раза правой то другая процедура должна вызываться
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Ну есть такая вариация как использовать компонент TApplicationEvents;
в обработчике пишешь что-то типа этого
Есть еще такая штука как Mouse_Event
в обработчике пишешь что-то типа этого
Код: Выделить всё
procedure Tform.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.Message = шелчек че-то так не вспомню then
begin
действия придумай сам
end;
-
- Сообщения: 340
- Зарегистрирован: 22 ноя 2004, 19:15
- Откуда: Минск
- Контактная информация:
А поподробне можно??
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
куда подробнее..??
[syntax=Delphi] [/syntax]
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
if getasynckeystate(1)<>0 - это левая клавиша мыши в любом месте
if getasynckeystate(2)<>0 - это правая клавиша в любом месте. Тебе осталось сообразить как замутить это к кнопке
Есть еще вариант повесить таймер с интервалом 10, на оntime - вещаешь эту функцию, создай счетчик на каждый клик, если он равен 2 то что-то делаем
if getasynckeystate(2)<>0 - это правая клавиша в любом месте. Тебе осталось сообразить как замутить это к кнопке

Есть еще вариант повесить таймер с интервалом 10, на оntime - вещаешь эту функцию, создай счетчик на каждый клик, если он равен 2 то что-то делаем

-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
А вот еще одна фича
Как отловить положение курсора:
//Вне процедуры!
Type Tpoint = record
x:integer;
y:integer;
end;
Потом объявляете саму переменную :
Var
Pos: TPoint;
И собcтвенно получение координат:
GetCursorPos(pos);
x:=pos.x;
y:=pos.y;
end;
Как отловить положение курсора:
//Вне процедуры!
Type Tpoint = record
x:integer;
y:integer;
end;
Потом объявляете саму переменную :
Var
Pos: TPoint;
И собcтвенно получение координат:
GetCursorPos(pos);
x:=pos.x;
y:=pos.y;
end;
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

-
- Сообщения: 273
- Зарегистрирован: 30 июн 2005, 14:53
Код: Выделить всё
var
ClickTime:Cardinal;
{$R *.dfm}
procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
If Button=mbRight then
If GetTickCount-ClickTime<1000 then
begin
Caption:='Двойной клик правой кнопкой мыши';
ClickTime:=0;
end else ClickTime:=GetTickCount;
end;
procedure TForm1.StringGrid1DblClick(Sender: TObject);
begin
Caption:='Двойной клик левой кнопкой мыши';
end;
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Лелик, имхо от лукавого это всё... Надо всё-таки мелкомягких стандартов держаться. Есть клик, есть дабл клик (левой) и есть клик правой кнопицей, вызывающий, как правило, контекстное меню. Это называется интуитивно понятным интерфейсом. Догадаться, что по гриду может быть нанесён двойной щелчок *правой* кнопкой мыши будет очень непросто 

