2013-06-21 1 views
1
에서 유니 코드 TText 드롭은

나는 유니 코드 체스 조각 (StackOverflow Delphi chess unicode link 및 드래그 앤 드롭을 참조하여 TRectangle & TText와 DelphiXE4에서 체스 판 GUI를 만들려고 노력하고 있지만 DND가 제대로 동작하지 않습니다! 내 테스트 프로젝트가 FireMonkey FMX입니다 . 나는 끌어서 놓기 /로 dragOver 이벤트는 코드에서하지만 결과에 & 소스를 그대로 사용하여 포함하여 다양한 코드 추가를 시도했습니다.드래그 앤 DelphiXe4

내가 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. 

도움 &에 대한 대부분의 감사가 기대

EDIT/답변 - 감사

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. 
: 여기

UPDATE

는 bummi에서 코드

그러나 이것으로도 나는 여전히 나를 위해 일하는 나의 체스 예제를 얻을 수 없다! 오 이런!

+0

해결할 수 있었습니까? –

답변

2

TDragObject의 원본이 TText 인 경우 동의해야합니다.

Accept := Data.Source is TText; 

송신자는 Rectangle7이거나 Rectangle7DragOver가 할당 된 구성 요소입니다.

+0

안녕하세요 bummi 방금 코드/조언을 시도했지만 아직 TText가 DND가 아닙니다. 코드를 입력하고 작동하는 방식을 정확하게 볼 수 있도록 작업 코드로 전체 양식을 게시 할 수 있습니까? 감사합니다 – rpd

+0

거기에 위의 코드보다 더 이상의 코드가 없습니다. TText의 DragMode를 dmAutomatic으로 설정 했습니까? – bummi

+0

네, TMAX를 텍스트로 설정했습니다 ... – rpd