1

Unicode チェスの駒を使用して、TRectangle と TText を使用して DelphiXE4 でチェス盤の gui を作成しようとしています ( StackOverflow Delphi chess unicode リンクとドラッグ アンド ドロップを参照してください。ただし、DND を正しく動作させることはできません! 私のテスト プロジェクトは FireMonkey FMX です。さまざまなコードを試しました。コードでの Accept と Source の使用を含む DragDrop/DragOver イベントへの追加ですが、結果はありません。

TRectangle と TText コンポーネントでドラッグドロップを auto に設定し、ドラッグ機能を取得できますが、ドロップ機能はありません! ドロップ イベントを受け入れるために、ターゲット TRectangle のイベント DragDrop DragOver にどのコードを入力する必要がありますか? (私はこれに非常に混乱しており、Google検索で明確な指示がどこにも見つかりません!)

これが私の基本的なテストコードです(フォーム上):

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs,
  FMX.StdCtrls, FMX.Objects;

type
  TForm1 = class(TForm)
    Rectangle1: TRectangle;
    Rectangle2: TRectangle;
    Rectangle3: TRectangle;
    Rectangle4: TRectangle;
    Rectangle5: TRectangle;
    Rectangle6: TRectangle;
    Rectangle7: TRectangle;
    Rectangle8: TRectangle;
    Rectangle9: TRectangle;
    Text1: TText;
    procedure Rectangle7DragOver(Sender: TObject; const Data: TDragObject;
      const Point: TPointF; var Accept: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Rectangle7DragOver(Sender: TObject; const Data: TDragObject;
  const Point: TPointF; var Accept: Boolean);
begin
  if Sender is TText then 
    Accept := True;
end;

end.

助けてくれてありがとう、返信を楽しみにしています-ありがとう

編集/更新

以下は bummi のコードです。

unit Unit3;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs,
  FMX.Objects, FMX.Edit;

type
  TForm3 = class(TForm)
    Rectangle1: TRectangle;
    Text1: TText;
    Edit1: TEdit;
    procedure Rectangle1DragOver(Sender: TObject; const Data: TDragObject;
      const Point: TPointF; var Accept: Boolean);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation    
{$R *.fmx}    
procedure TForm3.Rectangle1DragOver(Sender: TObject;
  const Data: TDragObject; const Point: TPointF; var Accept: Boolean);
begin
  Caption := Data.Source.ClassName ;
  Accept := Data.Source is TText;       
end;    
end.

ただし、これでもチェスの例をうまく機能させることはできません! ああああああ!

4

1 に答える 1