掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
動的に生成した複数のコンポーネントをドラックドロップするには (ID:39666)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつもお世話になっています。 お遊びでカードゲームを作っています。 複数のImageコンポーネントを動的に生成し、 カードに見立てます。 ここまでは良いのですが、 これをドラックドロップで自由に移動できるようにしたのです。 しかし、名前を動的に命名している為、 動かすコンポーネントの名前を取得し、 移動させる方法が判りません。 どなたかお知恵を拝借いただけないでしょうか? 以下コードです。 コンポーネント生成 var Form1: TForm1; Imagel:TImage; procedure TForm1.Button2Click(Sender: TObject); var i,i1,i2:integer; s:string; begin i := 0; while 6 > i do begin Imagel := TImage.Create(self); with Imagel do begin i1 := 10; i2 := 10 + i * 80; parent := ScrollBox1; //親コンポーネントを設定 setBounds(i1,i2,50,70); //位置と大きさを設定 s := listbox3.Items[i]; listbox3.Items.Delete(i); if s[1] = 'h' then begin Imagel.Canvas.Brush.Color := clWhite; Imagel.canvas.Pen.Mode := pmcopy; Imagel.canvas.Rectangle(0,0,50,70); Imagel.canvas.Font.Color := clblack; Imagel.canvas.Font.Size := 14; Imagel.canvas.TextOut(20,25, s[2]); end else begin Imagel.Canvas.Brush.Color := clblack; Imagel.canvas.Pen.Mode := pmcopy; Imagel.canvas.Rectangle(0,0,50,70); Imagel.canvas.Font.Color := clWhite; Imagel.canvas.Font.Size := 14; Imagel.canvas.TextOut(20,25, s[2]); end; name := 'card' + s; end; i := i + 1; end; end; コンポーネントドラックドロップ移動 (方法が判らず、サンプルの状態から全く手をつけていません) procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Image1.BeginDrag(False); end; procedure TForm1.ScrollBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var P: TPoint; begin GetCursorPos(P); Image1.Left := P.x - left - Image1.Width -5; Image1.Top := P.y - top - Image1.Height -5; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.