我想在DelphiXE4中用TRectangle製作一個棋盤gui &使用unicode象棋棋子(請參閱StackOverflow Delphi chess unicode link並拖放但我無法讓DND正常工作!我的測試項目是FireMonkey FMX 。 我嘗試了各種代碼添加到的DragDrop/dragover事件包括使用接受的代碼,但沒有結果&來源。在DelphiXe4中拖放unicode TText
我設置的DragDrop自動上TRectangle & TText組件&可以得到拖拽功能,但沒有下降的功能!什麼我需要輸入事件DragDrop DragOver在目標TRectangle接受放置事件嗎?(我很困惑這個&找不到谷歌搜索清除指令的任何地方)
這裏是我的基本測試代碼(表格):
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.
非常感謝幫助&期待回覆,感謝
編輯/ 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.
但即使如此,我仍然無法讓我的國際象棋範例爲我工作!哦,親愛的!
你是否設法解決這個問題? –