Страница 1 из 1
Зажата ли левая кнопка мыши
Добавлено: 25.04.2010 06:46:03
pyhpyh
Здравствуйте, уважаемые
До знакомства с Free Pascal уже имел опыт программирования консольных приложений на Python и веб-приложений на PHP, по этому особых сложностей с Free Pascal не возникло, почти успешно всю ночь осваиваю Free Pascal, но возник небольшой вопрос. Как можно проверить зажата ли сейчас левая кнопка мыши? И есть ли какие-либо модули для работы с CURL? Только не через установщик пакетов, т.к. почему-то в Lazarus 0.9.28.2 в моей Ubuntu они не компилируются.
/home/pyhpyh/mailpas-2006-03-02/laz/lazpop3.pas(1,1) Fatal: Can't find unit libc used by lazpop3
из-за такой ошибки
Re: Зажата ли левая кнопка мыши
Добавлено: 25.04.2010 13:28:56
Maxizar
Ну можно вот так, я реализовал два метода
1:через перехват сообщений
2: через события компанента в данном случае Панели вот код:
Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls,Messages,LMessages;
//Добавлены вот эти модули Messages,LMessages;
type
{ TForm1 }
TForm1 = class(TForm)
Panel1: TPanel;
Timer1: TTimer;
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer
);
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
procedure LBUTTONDOWN (var message: TMessage); message LM_LBUTTONDOWN;
procedure LBUTTONUP (var message: TMessage); message LM_LBUTTONUP;
{ public declarations }
end;
var
Form1: TForm1;
MLeft:Boolean;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if MLeft then
Form1.Caption:='Нажали'
else
Form1.Caption:='Ждемс'
end;
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
//Вообще то событие возникает когда перемещаем мышь на панели но мы
//тут будем использовать Shift чтоб узнать зажата ли кнопка
//При этом нужно помнить что нажав кнопку на понели и переместив за границу панели
//надпись не измениться так как сама процедура генериться только в панели
If (ssLeft in Shift) then
Panel1.Caption:='Удерживаем левую кнопку'
else
Panel1.Caption:='Просто так елозим на панели'
end;
procedure TForm1.LBUTTONDOWN(var message: TMessage);
begin
MLeft:=true; //Перехват события нажатия кнопки в данном случае левой
end;
procedure TForm1.LBUTTONUP(var message: TMessage);
begin
MLeft:=False; //Отпустили кнопку записываем в переменную багу
end;
end.
Re: Зажата ли левая кнопка мыши
Добавлено: 25.04.2010 20:04:30
pyhpyh
Maxizarспасибо за пример, навели на почву для размышлений. только почему-то не получилось, может потому что в Убунте делаю приложение.
