【问题标题】:Drag and drop unicode TText in DelphiXe4在 Delphi Xe4 中拖放 unicode 文本
【发布时间】:2013-06-18 10:15:51
【问题描述】:

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

我在 TRectangle 和 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.

非常感谢您的帮助并期待回复-谢谢

编辑/更新

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

但是即使这样,我仍然无法让我的国际象棋示例为我工作!哦,天哪!

【问题讨论】:

  • 你解决了吗?

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


【解决方案1】:

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

 Accept := Data.Source is TText;

Sender 将是您的 Rectangle7,或者 Rectangle7DragOver 分配给的任何组件。

【讨论】:

  • 嗨,笨蛋,我刚刚尝试了您的代码/建议,但我仍然没有将 TText 转为免打扰!您能否发布带有工作代码的完整表格,以便我可以准确地看到您的代码是如何输入和工作的?谢谢
  • 没有比上面显示的更多的代码。您是否将 TText 的 DragMode 设置为 dmAutomatic?
  • 添加调试到你的 Rectangle7DragOver Caption := Data.Source.ClassName ; 为我工作,使用简单的形式,矩形作为目标,TText 和 TEdit 作为源...
  • Thx bummi 为您提供进一步的帮助。虽然我在这里遗漏了一些东西,因为我无法让它工作!您能否发布您的完整工作代码,以便我可以看到该怎么做/哪里出错了?万分感谢...
  • 谢谢你的附件...我现在得去上班,但是今晚回家我会检查它们-谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2013-11-04
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多