Страница 1 из 2
Двойной клик правой мыши
Добавлено: 07 май 2006, 15:51
Лелик_1044
Как перехватить двойной клик по компоненту.
Скажем по TButton
Добавлено: 07 май 2006, 16:39
Duncon
А смысл этого? если он не объявлен его и не происходит, а вообще в buttonClick пишешь к примеру Enabled := false;
Ну это как вариант или же опиши конкретней зачем где и куда тебе надо прервать...
Добавлено: 07 май 2006, 16:59
Лелик_1044
[quote="Duncon"]А смысл этого? если он не объявлен его и не происходит, а вообще в buttonClick пишешь к примеру Enabled := false]
в дбгрид если щелкаешь 2 раза левой то одна процедура если 2 раза правой то другая процедура должна вызываться
Добавлено: 07 май 2006, 18:00
Duncon
Ну есть такая вариация как использовать компонент TApplicationEvents;
в обработчике пишешь что-то типа этого
Код: Выделить всё
procedure Tform.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.Message = шелчек че-то так не вспомню then
begin
действия придумай сам
end;
Есть еще такая штука как Mouse_Event
Добавлено: 08 май 2006, 11:58
Лелик_1044
А поподробне можно??
Добавлено: 08 май 2006, 14:57
Duncon
куда подробнее..??
Добавлено: 09 май 2006, 14:59
Dr_Grizzly
if getasynckeystate(1)<>0 - это левая клавиша мыши в любом месте
if getasynckeystate(2)<>0 - это правая клавиша в любом месте. Тебе осталось сообразить как замутить это к кнопке

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

Добавлено: 09 май 2006, 15:02
Dr_Grizzly
А вот еще одна фича
Как отловить положение курсора:
//Вне процедуры!
Type Tpoint = record
x:integer;
y:integer;
end;
Потом объявляете саму переменную :
Var
Pos: TPoint;
И собcтвенно получение координат:
GetCursorPos(pos);
x:=pos.x;
y:=pos.y;
end;
Добавлено: 10 май 2006, 09:56
Blood_Magic
Код: Выделить всё
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;
Добавлено: 10 май 2006, 14:38
Игорь Акопян
Лелик, имхо от лукавого это всё... Надо всё-таки мелкомягких стандартов держаться. Есть клик, есть дабл клик (левой) и есть клик правой кнопицей, вызывающий, как правило, контекстное меню. Это называется интуитивно понятным интерфейсом. Догадаться, что по гриду может быть нанесён двойной щелчок *правой* кнопкой мыши будет очень непросто
