Q&A

  • Teechart 에서 드레그 앤 드롭시, 커서 바꾸는 방법?


티차트로 드레그 앤 드롭을 하려 합니다.



티차트위로 드레그 했을때, 티차트의 아이콘을 드레그 아이콘으로 바꾸었으면



하는데, 일반적인 방법으로는 잘 되질 않습니다.



어떻게 해야 할지요? 답변 부탁드립니다.

4  COMMENTS
  • Profile
    홍성락 2001.11.20 22:16
    항시 wrote:

    >

    > 티차트로 드레그 앤 드롭을 하려 합니다.

    >

    > 티차트위로 드레그 했을때, 티차트의 아이콘을 드레그 아이콘으로 바꾸었으면

    >

    > 하는데, 일반적인 방법으로는 잘 되질 않습니다.

    >

    > 어떻게 해야 할지요? 답변 부탁드립니다.

    ///////////////////////////////////////////////////////////////////////

    아래처럼해도 되는데요

    procedure TForm1.Chart1MouseDown(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    begin

    if Button = mbRight then

    screen.Cursor :=crHandPoint

    else if Button = mbLeft then

    screen.Cursor :=crSizeAll;

    end;



    procedure TForm1.Chart1MouseUp(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    begin

    screen.Cursor :=crdefault;

    end;

  • Profile
    항시 2001.11.21 03:39


    먼저 질문에 대해, 답변해 주셔서, 감사드립니다. ^^;



    저두 역시 말씀해주신 방법을 사용해 보았지만, 제대로 잘 되지 않았습니다.





    저의 문제를 좀더 부연하여 설명드리면,



    MDI 폼에서 트리뷰에 있는 노드를 드레그해서, 티차트의 위에 드롭시키려고 합니다.



    일반적으로는 드레그와 드롭시, OnDropOver Event 에서 Accept 변수를 이용하면,



    커서가 crNoDrop 이나, crDrag 로 변환되는데, 티차트에서는 커서의 변환이 생각처럼



    되질 않습니다.



    다른 방법이 없을지요?



    홍성락 wrote:

    > 항시 wrote:

    > >

    > > 티차트로 드레그 앤 드롭을 하려 합니다.

    > >

    > > 티차트위로 드레그 했을때, 티차트의 아이콘을 드레그 아이콘으로 바꾸었으면

    > >

    > > 하는데, 일반적인 방법으로는 잘 되질 않습니다.

    > >

    > > 어떻게 해야 할지요? 답변 부탁드립니다.

    > ///////////////////////////////////////////////////////////////////////

    > 아래처럼해도 되는데요

    > procedure TForm1.Chart1MouseDown(Sender: TObject; Button: TMouseButton;

    > Shift: TShiftState; X, Y: Integer);

    > begin

    > if Button = mbRight then

    > screen.Cursor :=crHandPoint

    > else if Button = mbLeft then

    > screen.Cursor :=crSizeAll;

    > end;

    >

    > procedure TForm1.Chart1MouseUp(Sender: TObject; Button: TMouseButton;

    > Shift: TShiftState; X, Y: Integer);

    > begin

    > screen.Cursor :=crdefault;

    > end;

  • Profile
    홍성락 2001.11.21 05:21
    항시 wrote:

    >

    > 먼저 질문에 대해, 답변해 주셔서, 감사드립니다. ^^;

    >

    > 저두 역시 말씀해주신 방법을 사용해 보았지만, 제대로 잘 되지 않았습니다.

    >

    >

    > 저의 문제를 좀더 부연하여 설명드리면,

    >

    > MDI 폼에서 트리뷰에 있는 노드를 드레그해서, 티차트의 위에 드롭시키려고 합니다.

    >

    > 일반적으로는 드레그와 드롭시, OnDropOver Event 에서 Accept 변수를 이용하면,

    >

    > 커서가 crNoDrop 이나, crDrag 로 변환되는데, 티차트에서는 커서의 변환이 생각처럼

    >

    > 되질 않습니다.

    >

    > 다른 방법이 없을지요?

    >

    > 홍성락 wrote:

    > > 항시 wrote:

    > > >

    > > > 티차트로 드레그 앤 드롭을 하려 합니다.

    > > >

    > > > 티차트위로 드레그 했을때, 티차트의 아이콘을 드레그 아이콘으로 바꾸었으면

    > > >

    > > > 하는데, 일반적인 방법으로는 잘 되질 않습니다.

    > > >

    > > > 어떻게 해야 할지요? 답변 부탁드립니다.

    > > ///////////////////////////////////////////////////////////////////////

    > > 아래처럼해도 되는데요

    > > procedure TForm1.Chart1MouseDown(Sender: TObject; Button: TMouseButton;

    > > Shift: TShiftState; X, Y: Integer);

    > > begin

    > > if Button = mbRight then

    > > screen.Cursor :=crHandPoint

    > > else if Button = mbLeft then

    > > screen.Cursor :=crSizeAll;

    > > end;

    > >

    > > procedure TForm1.Chart1MouseUp(Sender: TObject; Button: TMouseButton;

    > > Shift: TShiftState; X, Y: Integer);

    > > begin

    > > screen.Cursor :=crdefault;

    > > end;

    //////////////////////////////////////////////////////////////////////////

    아 다른 컴포넌트에서 Drag하시려구 하셨군요.

    아래는 메세지써서 해본건데 참조해보세요

    ----------------------------------------------------------------------------

    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    ExtCtrls, TeeProcs, TeEngine, Chart, ComCtrls;



    type

    TForm1 = class(TForm)

    Chart1: TChart;

    TreeView1: TTreeView;

    procedure FormShow(Sender: TObject);

    procedure TreeView1MouseUp(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    procedure Chart1MouseUp(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);



    private

    { Private declarations }

    DataMoving : Boolean;

    procedure WndProc(var Message: TMessage); override;



    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}

    ////////////////////////////////////////////////////////////////////////////////

    procedure TForm1.FormShow(Sender: TObject);

    begin

    DataMoving := False;

    end;

    ////////////////////////////////////////////////////////////////////////////////

    procedure TForm1.WndProc(var Message: TMessage);

    begin

    if (Message.LParam = Longint(Chart1))or(Message.LParam = Longint(TreeView1)) then begin

    if (Message.Msg = CM_MOUSEENTER)and(DataMoving) then

    screen.Cursor := crDrag

    else if (Message.Msg = CM_MOUSELEAVE)and(DataMoving) then

    screen.Cursor := crNoDrop;

    end;

    if ((Message.Msg = WM_LBUTTONUP)or(Message.Msg = WM_RBUTTONUP))and

    (DataMoving) then begin

    screen.Cursor := crdefault;

    DataMoving := False;

    end;

    inherited WndProc(Message);

    end;

    ////////////////////////////////////////////////////////////////////////////////





    procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    begin

    if TreeView1.Selected <> nil then begin

    DataMoving := True;

    screen.Cursor := crDrag;

    end;

    end;

    procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    begin

    DataMoving := False;

    screen.Cursor := crdefault;

    end;



    procedure TForm1.Chart1MouseUp(Sender: TObject; Button: TMouseButton;

    Shift: TShiftState; X, Y: Integer);

    begin

    DataMoving := False;

    screen.Cursor := crdefault;

    end;



    end.



  • Profile
    항시 2001.11.21 20:53


    감사합니다. 많은 도움이 되었습니다. ^^;



    홍성락 wrote:

    > 항시 wrote:

    > >

    > > 먼저 질문에 대해, 답변해 주셔서, 감사드립니다. ^^;

    > >

    > > 저두 역시 말씀해주신 방법을 사용해 보았지만, 제대로 잘 되지 않았습니다.

    > >

    > >

    > > 저의 문제를 좀더 부연하여 설명드리면,

    > >

    > > MDI 폼에서 트리뷰에 있는 노드를 드레그해서, 티차트의 위에 드롭시키려고 합니다.

    > >

    > > 일반적으로는 드레그와 드롭시, OnDropOver Event 에서 Accept 변수를 이용하면,

    > >

    > > 커서가 crNoDrop 이나, crDrag 로 변환되는데, 티차트에서는 커서의 변환이 생각처럼

    > >

    > > 되질 않습니다.

    > >

    > > 다른 방법이 없을지요?

    > >

    > > 홍성락 wrote:

    > > > 항시 wrote:

    > > > >

    > > > > 티차트로 드레그 앤 드롭을 하려 합니다.

    > > > >

    > > > > 티차트위로 드레그 했을때, 티차트의 아이콘을 드레그 아이콘으로 바꾸었으면

    > > > >

    > > > > 하는데, 일반적인 방법으로는 잘 되질 않습니다.

    > > > >

    > > > > 어떻게 해야 할지요? 답변 부탁드립니다.

    > > > ///////////////////////////////////////////////////////////////////////

    > > > 아래처럼해도 되는데요

    > > > procedure TForm1.Chart1MouseDown(Sender: TObject; Button: TMouseButton;

    > > > Shift: TShiftState; X, Y: Integer);

    > > > begin

    > > > if Button = mbRight then

    > > > screen.Cursor :=crHandPoint

    > > > else if Button = mbLeft then

    > > > screen.Cursor :=crSizeAll;

    > > > end;

    > > >

    > > > procedure TForm1.Chart1MouseUp(Sender: TObject; Button: TMouseButton;

    > > > Shift: TShiftState; X, Y: Integer);

    > > > begin

    > > > screen.Cursor :=crdefault;

    > > > end;

    > //////////////////////////////////////////////////////////////////////////

    > 아 다른 컴포넌트에서 Drag하시려구 하셨군요.

    > 아래는 메세지써서 해본건데 참조해보세요

    > ----------------------------------------------------------------------------

    > unit Unit1;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > ExtCtrls, TeeProcs, TeEngine, Chart, ComCtrls;

    >

    > type

    > TForm1 = class(TForm)

    > Chart1: TChart;

    > TreeView1: TTreeView;

    > procedure FormShow(Sender: TObject);

    > procedure TreeView1MouseUp(Sender: TObject; Button: TMouseButton;

    > Shift: TShiftState; X, Y: Integer);

    > procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;

    > Shift: TShiftState; X, Y: Integer);

    > procedure Chart1MouseUp(Sender: TObject; Button: TMouseButton;

    > Shift: TShiftState; X, Y: Integer);

    >

    > private

    > { Private declarations }

    > DataMoving : Boolean;

    > procedure WndProc(var Message: TMessage); override;

    >

    > public

    > { Public declarations }

    > end;

    >

    > var

    > Form1: TForm1;

    >

    > implementation

    >

    > {$R *.DFM}

    > ////////////////////////////////////////////////////////////////////////////////

    > procedure TForm1.FormShow(Sender: TObject);

    > begin

    > DataMoving := False;

    > end;

    > ////////////////////////////////////////////////////////////////////////////////

    > procedure TForm1.WndProc(var Message: TMessage);

    > begin

    > if (Message.LParam = Longint(Chart1))or(Message.LParam = Longint(TreeView1)) then begin

    > if (Message.Msg = CM_MOUSEENTER)and(DataMoving) then

    > screen.Cursor := crDrag

    > else if (Message.Msg = CM_MOUSELEAVE)and(DataMoving) then

    > screen.Cursor := crNoDrop;

    > end;

    > if ((Message.Msg = WM_LBUTTONUP)or(Message.Msg = WM_RBUTTONUP))and

    > (DataMoving) then begin

    > screen.Cursor := crdefault;

    > DataMoving := False;

    > end;

    > inherited WndProc(Message);

    > end;

    > ////////////////////////////////////////////////////////////////////////////////

    >

    >

    > procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;

    > Shift: TShiftState; X, Y: Integer);

    > begin

    > if TreeView1.Selected <> nil then begin

    > DataMoving := True;

    > screen.Cursor := crDrag;

    > end;

    > end;

    > procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;

    > Shift: TShiftState; X, Y: Integer);

    > begin

    > DataMoving := False;

    > screen.Cursor := crdefault;

    > end;

    >

    > procedure TForm1.Chart1MouseUp(Sender: TObject; Button: TMouseButton;

    > Shift: TShiftState; X, Y: Integer);

    > begin

    > DataMoving := False;

    > screen.Cursor := crdefault;

    > end;

    >

    > end.

    >