16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:GrabHandleサイズ変更用の黒いハンドル"
この発言は #00296 凛 さんのGrabHandleサイズ変更用の黒いハンドル に対するコメントです
//#296にUpしたTmyGrabHandleを使ってコンポーネントを移動するサンプルです。
//FormにTmemo一つ貼り付けただけです。 TMyGrabHandleのクラスは別ユニット
//なり同じユニットなりに書いといて下さい。別ユニットにしたときは
//interfaceのUsesにそのunit名を加えるのを忘れずに
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure Memo1Click(Sender: TObject);
procedure FormClick(Sender: TObject);
procedure Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Memo1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Memo1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private 宣言 }
dragOrigin:TPoint;
dragging:boolean;
myHokuro:TmyGrabHandle;
procedure showmemo(sender:TObject);
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.showmemo(sender:TObject);
begin
memo1.left:=myHokuro.left;
memo1.top:=myhokuro.Top;
memo1.width:=ABS(myHokuro.Right-myHokuro.Left);
memo1.Height:=ABS(myHokuro.Bottom-myHokuro.Top);
end;
procedure TForm1.Memo1Click(Sender: TObject);
begin //GrabHandleを出現させる
if not dragging then
begin
if myHokuro=nil then
begin
myHokuro:=TmyGrabHandle.create(Form1);
myHokuro.OnEndMoving:=showmemo;
end;
myHokuro.alignTo(memo1);
myHokuro.show;
end;
end;
procedure TForm1.FormClick(Sender: TObject);
begin //memo以外の部分をクリックしたらGrabHandleを消す
if myHokuro<>nil then myHokuro.Hide;
end;
procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin //ドラッグ開始 原点を覚えておく
if myHokuro<>nil then
begin
if myHokuro.visible then
begin
dragging:=true;
dragOrigin:=Point(x,y);
end;
end;
end;
procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin //動きに合わせてDragHandleを移動させる
if dragging then
begin
with myHokuro do
setAt(memo1.left+x-DragOrigin.x,
memo1.Top+y-DragOrigin.y,
memo1.left+x-DragOrigin.x+memo1.width,
memo1.Top+y-DragOrigin.y+memo1.height);
end;
end;
procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin //ドラッグをやめるmemoをDraghandleに合わせる
Dragging:=false;
if myHokuro<>nil then
begin
memo1.left:=myHokuro.left;
memo1.top:=myHokuro.top;
end;
end; 97/12/18(木) 08:31 凛(MXB01744)
Original document by 凛 氏 ID:(MXB01744)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|