在Delphi Xe4中拖放unicode Text

时间:2013-06-21 10:05:55

标签: delphi drag-and-drop delphi-xe4

我正在尝试使用TRectangle&amp ;;在DelphiXE4中制作棋盘gui。 TText使用unicode国际象棋棋子(请参阅StackOverflow Delphi chess unicode link并拖放但我无法让DND正常工作!我的测试项目是FireMonkey FMX。 我已尝试向DragDrop / DragOver事件添加各种代码,包括使用Accept&代码中的来源,但没有结果。

我在TRectangle& amp;上将dragdrop设置为auto TText组件&可以得到拖动功能但没有掉落功能!我需要在目标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.

非常感谢帮助&期待回复 - 谢谢

EDIT / UPDATE

以下是来自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.

然而即便如此,我仍然无法让我的国际象棋榜样为我工作!哦亲爱的啊啊!

1 个答案:

答案 0 :(得分:2)

如果当时TDragObject的Source是TText,则必须接受。

 Accept := Data.Source is TText;

发件人将是您的Rectangle7,或任何组件Rectangle7DragOver被分配给。