Страница 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
спасибо за пример, навели на почву для размышлений. только почему-то не получилось, может потому что в Убунте делаю приложение. :roll: