Solved

Drag and drop onto the 'TAB' of a non visible tabsheet

Posted on 2004-09-21
17
420 Views
Last Modified: 2010-08-05
Hi,

How do I drag and drop onto the tab of a tabsheet. The tabsheet I want to affect with the drop will not have focus. Would I have to track the mouse globally, check if the control under it is a tab and then take apprpriate action. I notice the tab seems to be a seperate control.

Thanks,
Dion.
0
Comment
Question by:Diono
  • 5
  • 4
  • 4
  • +1
17 Comments
 
LVL 27

Accepted Solution

by:
kretzschmar earned 250 total points
ID: 12110768
- use the onDragOver-event of your TPageControl
- Determine the Tab with the indexOfTab-method within this event
- additional you can use the getHitTestInfo there (to lookup if you are over a tab or on a clientarea)

sorry no time for a sample

meikl ;-)
0
 
LVL 22

Expert Comment

by:Ferruccio Accalai
ID: 12111045
meikl, you've already answered a question like this! :))

Diono: Follow http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_10200281.html#1952853

F68 ;-)
0
 

Author Comment

by:Diono
ID: 12111062
Tried that. The event does not fire.
0
 
LVL 22

Expert Comment

by:Ferruccio Accalai
ID: 12111073
Wich event? There're not events in the accepted code....
0
 
LVL 27

Expert Comment

by:kretzschmar
ID: 12111098
phew, long time ago (5 years) . . . guess coded with d3

well, the api is not needed,
since the two methods mentioned above are introduced,
but should also work without any change

meikl ;-)
0
 
LVL 27

Expert Comment

by:kretzschmar
ID: 12111111
>Tried that. The event does not fire.
maybe you should explain from where you do what drag
0
 

Author Comment

by:Diono
ID: 12111182
Firstly, I am using a PageControl with 2 tabsheets
From a TreeView, which has its alignment set to alClient, I want to drag(anything) over the other tabsheets 'TAB' and be able to accept the drag. I declared the following to test:-

procedure TMainForm.pcSMSDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  accept := true;
  showmessage('dragged over');
end;

But the event does not seem to be fired.

0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 27

Expert Comment

by:kretzschmar
ID: 12111289
hmm, should work

sorry, no delphi on hand, so cannot test myself,
will try this evening, if not solved then

meikl ;-)
0
 
LVL 22

Expert Comment

by:Ferruccio Accalai
ID: 12111315
I should try this way....

procedure TForm1.PageControl1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  Info : TTCHitTestInfo;
  Tab : Integer;
begin
  Info.pt := Point(x,y);
  Tab := PageControl1.Perform(TCM_HITTEST,0,LongInt(@Info));
  if Tab > -1 then
    Pagecontrol1.ActivePage := PageControl1.Pages[Tab];
    showmessage('Dragged');
end;

procedure TForm1.PageControl1DragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
if (Sender is TPageControl) then Accept := True;
end;
0
 

Author Comment

by:Diono
ID: 12112419
Thanks guys. Seeing as Kretzschmar was first with an answer, and it works, I will award him the points. In closing, the reason the pagecontrol would not accept the dragover was because I was doing an ole drag. Can this type of drag be accomodated in delphi? I m dragging from Mike's VirtualStringTree. I changed the drag type to VCLDrag.

Thanks.
0
 
LVL 14

Expert Comment

by:DragonSlayer
ID: 12120756
0
 

Author Comment

by:Diono
ID: 12121354
Thanks all.
0
 
LVL 22

Expert Comment

by:Ferruccio Accalai
ID: 12121411
??
Nothing to say about your choice Diono, but in my opinion, if you think that meikl has answered your question, you should had at least accepted this one http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_21138815.html#12110768
0
 

Author Comment

by:Diono
ID: 12130280
Sorry. None at all.  I pressed the accept button before realising it was the right person, but wrong answer.

Dion.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now