お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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