могу ошибаться но
salog писал(а):1) как сделать, чтобы при перемещении ToolBar или панели рисовался прозрачный контур, следующий за курсором мыши?
после взятия быстро регистрируется курсор с нужным изображением и готово.
хотя просто контур можно и проще
http://www.podgoretsky.com/ftp/Docs/Del ... /ch_12.htmПеремещение элементов
для кросплатформенного решения поискать эти сообщения в исходниках лазаря. там же будет и для линукса.
salog писал(а):2) Как сделать рисование рамки поверх всех визуальных компонентов на форме, если я выполняю действие типа "выделить объекты" (двигаю мышку с нажатой левой кнопкой)?
тут вроде просто рисовать надо ручками. например как тут
- Код: Выделить всё
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, JvGIF, StdCtrls, Buttons, jpeg;
type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Image1: TImage;
Shape1: TShape;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
foo:Tpoint;
state:boolean;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Shape1.Visible:=true;
Shape1.Top:=x;
Shape1.Left:=y;
Shape1.Height:=0;
Shape1.Width:=0;
foo.x:=x;
foo.y:=y;
state:=true;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Shape1.Top:=foo.x-x;
Shape1.Left:=foo.y-y;
state:=false;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if state then
begin
Shape1.Width:=x-foo.x;
Shape1.Height:=y-foo.y;
end;
end;
procedure TForm1.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ShowMessage(inttostr(x));
end;
end.
Добавлено спустя 3 минуты 55 секунд:поискав резиновый контур наткнулся на такое
http://delphiworld.narod.ru/base/select ... angle.html