Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

Сделать выделение прямоугольника мышью   Найти похожие ветки 

 
AlexeyT ©   (2006-06-07 18:18) [0]

Hello All,

Хочу сделать на компоненте выделение прямоугольной области мышью.
Соотв-но, нужно иметь реакцию на: 1. нажатие мыши - начать выделение, 2. перетаскивание, 3. отпускание мыши - конец выделения.

Какие события нужно для этого (для пунктов 1-3) перехватить?
OnClick не подходит, OnBeginDrag тоже...


 
Некий житель, Ваш сосед   (2006-06-07 18:48) [1]

1) OnMouseDown
2) OnMouseMove
3) OnMouseUp


 
AlexanderMS ©   (2006-06-07 18:52) [2]

Что-то наподобие:

unit MainUnit;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls;

type
 TForm1 = class(TForm)
   procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure FormCreate(Sender: TObject);
   procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
   procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
   { Private declarations }
   OldPenMode:TPenMode;
   StartX, StartY, OldX, OldY:Integer;
   dragging:Boolean;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
dragging:=false;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
Canvas.Brush.Color:=clWhite;
OldPenMode:=Canvas.Pen.Mode;
Canvas.Pen.Mode:=pmNotXor;

StartX:=X;
StartY:=Y;
OldX:=X;
OldY:=Y;

dragging:=true;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
if dragging=false then exit;

Canvas.Rectangle(StartX, StartY, OldX, OldY);
Canvas.Rectangle(StartX, StartY, X, Y);
OldX:=X;
OldY:=Y;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
dragging:=false;
Canvas.Pen.Mode:=OldPenMode;
Canvas.Rectangle(StartX, StartY, X, Y);
end;

end.


 
AlexeyT ©   (2006-06-07 19:35) [3]

Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.034 c
2-1149444053
vegarulez
2006-06-04 22:00
2006.06.25
Как создать фай *.txt и записать в него данные.


2-1149624849
Mr tray
2006-06-07 00:14
2006.06.25
Глобальные или локальные переменные?


3-1145965808
Alpine
2006-04-25 15:50
2006.06.25
Проблемма с UPPER(FIELD) LIKE .... в IB 7.01


15-1148876589
lobach
2006-05-29 08:23
2006.06.25
Триал


9-1131334072
VolanD666
2005-11-07 06:27
2006.06.25
Как подсчитать FPS?