
26.09.2012, 05:11
|
Так проходящий
|
|
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
|
|
можно через DrawFocusRect
Код:
var
prevlasso, lasso: TRect;
lassoStarted: boolean = false;
procedure Tmain.drawLasso(r: TRect); // рисует/стирает рамку выделения
var rr: TRect;
begin
rr.Left := min(r.Left, r.Right);
rr.Top := min(r.Top, r.Bottom);
rr.Right := max(r.Left, r.Right);
rr.Bottom := max(r.Top, r.Bottom);
main.Canvas.DrawFocusRect(rr);
end;
procedure Tmain.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if not (ssleft in shift) then exit;
lassoStarted := true;
lasso.TopLeft := point(x, y);
lasso.BottomRight := point(x, y);
prevlasso := lasso;
drawLasso(lasso);
end;
procedure Tmain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not lassoStarted then exit;
prevlasso := lasso;
lasso.BottomRight := point(x, y);
drawLasso(prevlasso);
drawLasso(lasso);
end;
procedure Tmain.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if not lassoStarted then exit;
lassoStarted := false;
prevlasso := lasso;
drawLasso(prevlasso);
if ssShift in Shift then
ToggleSelectionOnThem
else
SelectThem;
end;
__________________
>woweook<
|