Re: TZF - Drag and Drop
i-cable <[email protected]>
| Newsgroups | gmane.comp.lang.delphi.topaz |
|---|---|
| Message-ID | <[email protected]> |
Dear Randy:
I thought someone would answer you. May be everyone is having some good
time. My 7.51 does have the mousedown event so I don't know anything about.
If the mousedown event works then it will be much better. My version doesn't
have mousedown so I use a special way to activate the drage mode. I think
someone may have a better way but since they are busy so I tell you my
method.
1. I use the CornerleftClick event to enable the dragmode. Please see the
first method below.
2. As an example, I use a Label to accept the Drop. So I put in the Tabel1's
DragOver event so it will show the DragCursor. Pleas see the second method.
3. To complete the Drop we need to put codes in the DragDrop of Label1. It
is better to make sure the draging component is the expected component
before accepting it. Please see Method 3.
4. The DragDrop function is bascially completed. But don't forget we have
enabled the Dragmode of TZGrid1 to dmAutomatic. This will create a problem
in the future that the cells of TZGrid1 components cannot be selected
anymore because drag mode will be started instead of selecting the cell.
Therefore we need method 4 to cancel out the Dragmode. That is all we need
for the Drag and Drop.
The operation will be like that. You select a cell then double click the
left corner of the TZGrid and hold the mouse and drag on the second click.
The first click will enter the dragmode then the second mouse down will
start the dragging. It works like a double click but actually not really a
double click.
There is also another method to start the dragmode which may be more useful
to you because you have the mousedown event. In the
TZGrid1CornerLeftClick(method 1), we can use the BeginDrag function instead
of changing the Dragmode. I don't like this method because I don't have
mouse down. I only have click events. In other words, it starts function
after the mouse button is released. This is not the windows convention. But
if you can make your mouse down event to work then this is a better way to
go.
I hope I have made my explaination clean. Good luck.
Abi
procedure TForm1.TzGrid1CornerLeftClick(Sender: TObject);
begin {use the left corner to enable drag}
tzgrid1.dragmode:=dmautomatic;
{tzgrid1.begindrag(false); another method}
end;
procedure TForm1.Label1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin {To Show the dragcur}
accept:=true;
end;
procedure TForm1.Label1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin {the label will accept anything from the TZGRID}
if source is ttzgrid then begin
label1.caption:=(source as ttzgrid).fields[(source as
ttzgrid).col-1].AsString;
end;
end;
procedure TForm1.TzGrid1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin {Must cancel out the drag mode otherwise we can't select a cell any
more}
tzgrid1.dragmode:=dmmanual;
end;
> Thanks for the response. I am using v8.04 (I think) The control shows a
> mousedown event, but it never gets called. The dmautomatic drag
> property causes problems with the ondblclick event because it happens
> immediately. Any thoughts? Benno sent me some code to try as well.
> Thanks again.
> i-cable wrote:
> >
> > Dear Randy:
> > I don't see a Mousedown event in TTzgrid. My version is 7.51. Not sure
> > about
> > higher version.
> > May be you have set the Mousedown event of the Form instead. But when
> > you
> > click the mouse inside the TTzgrid component, the Form does get the
> > click so
> > the FORM.MouseDown event it is not triggered. If you want to use drag,
> > you
> > need to set DragMode to dmAutomatic then use the OnDragOver event.
> >
> > Hope this can help.
> >
> > Abi
> >
> >
> > > I am trying to use drag and drop between dBF files using two
> > > TTZDBGRID's. I want to use the Mousedown event to start the drag
> > > process, but it never gets called when I click the mouse down. Can
> > > someone help me understand why this wouldn't work.
> > >
> > > Thanks
> > > Randy
> > >
> > >
> >
> >
>
>
==^================================================================
This email was sent to: [email protected]
EASY UNSUBSCRIBE click here: http://topica.com/u/?clvXPN.a5kvff.Z2NsZHQt
Or send an email to: [email protected]
TOPICA - Start your own email discussion group. FREE!
http://www.topica.com/partner/tag02/create/index2.html
==^================================================================