お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"ImageのDrag&Drop"

この発言に対し以下のコメントが寄せられています
#00091 Athena さん RE:ImageのDrag&Drop

■ImageのDrag&Dropを使う超初心者向けパズルサンプルです(^^; ■準備  Form1 に Panel1 Panel2 Panel3 Panel4をおいて、 Panel1 Panel2 Panel3 にそれぞれImage1 Image2 Image3 を乗せておきます。 Image1〜3にはオブジェクトインスペクタで適当にPictureを読み込んでおいて 下さい。(\Images\Buttonsのbmpで結構です) FormCreate, Panel1DragOver, Panel1DragDrop,Image1StartDrag のコードを以下のように書きます。 //ここからがミソ(^^; オブジェクトインスペクタで Panel2,Panel3,Panel4 の OnDragOver,OnDragDrop 各イベントに Panel1DragOver, Panel1DragDrop を選択します。 同じくImage2 Image3 の OnStartDrag に Image1StartDragを選択します。 ImageをDrag&Dropして元通りに並んだら'CLEAR'です。 ■コード //--------------------------------------------------------- unit Unit1; interface {省略 } public { Public 宣言 } end; var Form1: TForm1; Panel:Array [0..3]of TPanel; //Panelを配列に Image:Array [0..2]of TImage; //Imageを配列に ImageT:Integer;//選択されたImageのTag implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); var i: Integer; begin Panel[0]:=Panel1; //配列に代入 Panel[1]:=Panel2; Panel[2]:=Panel3; Panel[3]:=Panel4; Image[0]:=Image1; Image[1]:=Image2; Image[2]:=Image3; for i := 0 to 3 do begin Panel[i].Tag:=i; //Tagの設定 end; for i := 0 to 2 do begin Image[i].DragMode:=dmAutomatic;//Drag出来るように Image[i].Align:=alClient;//隙間をなくすため Image[i].Stretch:=True;//これはしなくても可 Image[i].Tag:=i; end; end; procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept:=True;//受け取り end; procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer); var i : Integer; begin Image[ImageT].Parent:=Panel[(Sender as TPanel).Tag];//Imageの移動 for i := 0 to 2 do begin if Image[i].Parent <> Panel[i] then //判定 Exit; //元通りじゃないときはExit; end; ShowMessage('CLEAR!!'); end; procedure TForm1.Image1StartDrag(Sender: TObject; var DragObject: TDragObject); begin ImageT:=(Sender as TImage).Tag;//ImageのTagをImageTに代入 end; end. //----ここまで----------------------------------------------- 1つのImageをCopyRectで分割してImage1,Image2・・に入れれば、 もっとらしくなるんですが(^^; _/_/ Athena ( VYH00522 ) _/_/ Original document by Athena 氏 ID:(VYH00522)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum