お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





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

"RE:図形の移動(続き)"

この発言は
#00784 TORA さんの図形の移動
に対するコメントです

この発言に対し以下のコメントが寄せられています
#00795 TORA さん RE^2:図形の移動(続き)

前の発言の続きです。 ------------------------------------------------------------- // 初期設定 procedure TForm1.FormCreate(Sender: TObject); begin ShapeList := TList.Create; // 空の図形リストを作成 SentakuZukei := nil; DragFlag := false; end; // オブジェクトの破棄 procedure TForm1.FormDestroy(Sender: TObject); var I : integer; begin if ShapeList <> nil then // 図形リストの解放 begin for I := 0 to ShapeList.Count - 1 do if ShapeList[I] <> nil then TCyokusen(ShapeList[I]).Free; ShapeList.Free; end; end; // 直線を定義して描画 procedure TForm1.Button1Click(Sender: TObject); var Zu : TCyokusen; begin Zu := TCyokusen.Create; with Zu do begin Pen.Color := random($FFFFFF); Pen.Style := psSolid; pen.Width := 1; SX := random(400); SY := random(400); EX := random(400); EY := random(400); draw(pmCopy ,Canvas); end; ShapeList.Add(Zu); // 描画した線を図形リストへ追加 end; // 長方形を定義して描画 procedure TForm1.Button2Click(Sender: TObject); Var Zu : TSikaku; begin Zu := TSikaku.Create; with Zu do begin Pen.Color := random($FFFFFF); Pen.Style := psSolid; pen.Width := 1; Brush.Color := random($FFFFFF); Brush.Style := TBrushStyle(Round(Random)); SX := random(400); SY := random(400); EX := random(400); EY := random(400); draw(pmCopy ,Canvas); end; ShapeList.Add(Zu); // 描画した長方形を図形リストへ追加 end; // MouseDounイベント procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var I : integer; begin DragFlag := false; SentakuZukei := nil; // 描画した逆の順序でループ for I := ShapeList.Count - 1 downto 0 do begin if ShapeList[I] <> nil then begin // X,Yが図形上か判断 if TToraShape(ShapeList[I]).isOnShape(X ,Y) then begin // 図形上のとき SentakuZukei := ShapeList[I]; prevPoint.x := X; prevPoint.y := Y; DragFlag := true; exit; end; end; //if ShapeList end;//for i end; // MouseMoveイベント procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if DragFlag then // ドラグ中だったら仮の図形を移動 begin Sentakuzukei.move(Canvas ,X - prevPoint.x ,Y - prevPoint.y); prevPoint.x := X; prevPoint.y := Y; end; end; // MouseUpイベント procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var I : integer; begin DragFlag := false; // フォームを初期化 invalidate; application.processmessages; // 全部の図形を再描画 for I := 0 to ShapeList.Count - 1 do if ShapeList[I] <> nil then TToraShape(ShapeList[I]).Draw(pmCopy ,Canvas); end; end. ------------------------------------------------------------- ここまで 99/01/04 (月) 15:00 TORA(HHD00760) Original document by TORA 氏 ID:(HHD00760)



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

Copyright 1996-2002 Delphi Users' Forum