Solved

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

Posted on 2004-09-21
17
434 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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 23

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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 23

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
 
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 23

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
 

Author Comment

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

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

[Live Webinar] The Cloud Skills Gap

As Cloud technologies come of age, business leaders grapple with the impact it has on their team's skills and the gap associated with the use of a cloud platform.

Join experts from 451 Research and Concerto Cloud Services on July 27th where we will examine fact and fiction.

Question has a verified solution.

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

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Michael from AdRem Software outlines event notifications and Automatic Corrective Actions in network monitoring. Automatic Corrective Actions are scripts, which can automatically run upon discovery of a certain undesirable condition in your network.…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
Suggested Courses
Course of the Month6 days, 1 hour left to enroll

627 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