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.
ただし、これでもチェスの例をうまく機能させることはできません! ああああああ!