我正在尝试使用 unicode 棋子在 DelphiXE4 中使用 TRectangle 和 TText 制作棋盘 gui(请参阅StackOverflow Delphi 国际象棋 unicode 链接和拖放,但我无法让 DND 正常工作!我的测试项目是 FireMonkey FMX。我尝试了各种代码对 DragDrop/DragOver 事件的添加,包括在代码中使用 Accept & Source,但没有结果。
我在 TRectangle 和 TText 组件上将拖放设置为自动,并且可以获得拖放功能但没有拖放功能!我需要在目标 TRectangle 上的事件 DragDrop DragOver 中输入什么代码才能接受放置事件?(我对此感到非常困惑,在任何地方都找不到关于谷歌搜索的明确说明!)
这是我的基本测试代码(在表单上):
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.
但是即使这样,我仍然无法让我的国际象棋示例为我工作!哦,亲爱的啊!