View Issue Details

IDProjectCategoryView StatusLast Update
0005974JEDI VCL00 JVCL Componentspublic2013-01-15 15:30
ReporterMelenkurionAssigned Toobones 
PrioritynormalSeverityminorReproducibilityhave not tried
Status resolvedResolutionno change required 
Product Version 
Target VersionFixed in Version 
Summary0005974: TJvDockServer and dockable controls
DescriptionGood day! I use to program in Delphi (BDS 2006) library JVCL, and modules docking. Here I have one problem - namely, if the control has properties DragKind = dkDock and DragMode = dmAutomatic, then inexplicably TJvDockServer component takes the controls are both clients and provides docking. This procedure is wrong, because, as I found out, JVCL-docking functions normally only control class TForm, which contain a component class TJvDockClient. I would like to know whether it is possible in some way to prevent TJvDockServer do docking controls whose class is different from TForm? During a typical docking in Delphi for each event is called OnGetSiteInfo dock and it is possible to filter clients, but there is no such event TJvDockServer. I would be very grateful for your help.

Project file with all modules JVCL attached as an archive zip.
Additional Information2 Lord Arioch :)

You're right, I do not know English. Ok, I'll try to explain again. Located on the main form control class TFrame:

   TForm1 = class (TForm)
     Frame32: TFrame3;

It has the following properties:

Frame32.DragKind: = dkDock; Frame32.DragMode: = dmAutomatic;

That is, this frame is dockable. Next, in the form of a component class TJvDockServer. If I do a drag-and-dock for my frames, TJvDockServer accepts it as a customer - on the side of the form, which fits the frame, draw a narrow shaded strip and then the frame is docked. But it generates an error - this box can not be extracted from the dock. All works correctly only with the forms of class TForm or their descendants - when the form appears on one of the panels TJvDockServer, blue rectangle is drawn (as in design-redkatore Delphi) and the form will be properly docked, then it can be floated and make docking in another part of the main form. I would like to prevent that frames and any other dockable control, which is not a class TForm, were docked in TJvDockServer.
TagsDelphi 2006

Relationships

child of 0005271 confirmedwpostma416 Bug in TJvDockServer, TJvDockClient 

Activities

2012-08-31 11:05

 

HowToUse.zip (3,311,735 bytes)

Arioch

2012-08-31 15:37

developer   ~0020141

I downloaded your archive.

1st of all, i think that you'd remove *.dcu when uploading - those are nothing but wasted internet traffic and server disk.
2nd i cannot understand why you copied next to whole JCL and JVCL libraries into the project. Did you installed Jcl and JVCL into Delphi ? It looks rather weird to have JCL/JVCL copy in project folder. If nothing else, it would give you hard time when updating JCL and JVCL - you would have to update it in all your projects.

I removed those files and made archive smaller.

2012-08-31 15:37

 

JVCL-0005974_bug_demo.rar (373,348 bytes)

Arioch

2012-08-31 18:32

developer   ~0020146

the framework is awfully complex yet i think that

TJvDockCustomControl should override TWinControl.GetSiteInfo

This should check if there is DockManager.
If there is - then it should check if it is JvDockManager
If it is not - then it should set CanDock to false;

Otherwise he should either delegate decision to inherited TWinControl.GetSiteInfo, or to JvDockManager.DoCustomGetSeiteIngo

Melenkurion

2012-09-03 10:39

reporter   ~0020151

I'll explain why all modules are assembled in a project folder. The fact is that our license does not allow Delphi to install foreign components, even if they are free. So I need to work in all modules that are responsible for docking.
Your idea to override TWinControl.GetSiteInfo is clear, but I believe that this should be done not for JvDockManager, and for TJvDockPanel. Unfortunately, in my project module I could not do it. Positive results were obtained, when I was a little corrected module JvDockControlForm.pas, where there is a designer of this panel, but this method I do not like. Could you explain how this can be done in a module project?

Arioch

2012-09-03 10:43

developer   ~0020152

Last edited: 2012-09-03 10:45

> does not allow Delphi to install foreign components

But if you're using them without installing, then still why not put that in separate folder and add it to Project Options to search path ?

> not for JvDockManager, and for TJvDockPanel.

ahem ???
i named neither of those.

>> TJvDockCustomControl should override TWinControl.GetSiteInfo

and to follow:

> delegate decision to inherited TWinControl.GetSiteInfo,

That is probably bad idea

> or to JvDockManager.DoCustomGetSeiteIngo

That is probably a better one.

-----------

Those choices all however is related to design goals of the framework - and who can know them now ?..

Arioch

2012-09-03 11:03

developer   ~0020153

Last edited: 2012-09-03 11:42

I quite dislike

function TJvDockCustomControl.GetJvDockManager: IJvDockManager;
begin
  Result := IJvDockManager(DockManager);
end;

Frankly, i am afraid of it...
Changed it in proposal for 0005271

Arioch

2012-09-03 11:23

developer   ~0020154

Last edited: 2012-09-03 11:44

Well, the problem is i cannot reproduce your behaviour.

When i compile your project
1) frames do not have background colour until detached form main window
(Easily fixed by Parent Background - yet why? assuming you compiled form that very sources, that should not be. Or your EXE is from different sources)

2) frames are easily docked and undocked to me (probably because you create DockClient when docking)

wpostma416

2012-09-13 03:03

developer   ~0020184

This is not a bug in JVDocking. This is you not understanding VCL! :-)

Anyways, I figured out a solution for you, see this answer.

http://stackoverflow.com/questions/12210894/tjvdockserver-and-dockable-controls/12222188#12222188

obones

2013-01-15 15:30

administrator   ~0020358

Ok, then this issue can be resolved

Issue History

Date Modified Username Field Change
2012-08-31 11:05 Melenkurion New Issue
2012-08-31 11:05 Melenkurion File Added: HowToUse.zip
2012-08-31 11:28 Melenkurion Tag Attached: D2006
2012-08-31 11:28 Melenkurion Tag Detached: D2006
2012-08-31 11:29 Melenkurion Tag Attached: Delphi 2006
2012-08-31 15:28 Arioch Relationship added child of 0005271
2012-08-31 15:37 Arioch Note Added: 0020141
2012-08-31 15:37 Arioch File Added: JVCL-0005974_bug_demo.rar
2012-08-31 18:32 Arioch Note Added: 0020146
2012-09-03 10:39 Melenkurion Note Added: 0020151
2012-09-03 10:43 Arioch Note Added: 0020152
2012-09-03 10:45 Arioch Note Edited: 0020152
2012-09-03 11:03 Arioch Note Added: 0020153
2012-09-03 11:23 Arioch Note Added: 0020154
2012-09-03 11:42 Arioch Note Edited: 0020153
2012-09-03 11:44 Arioch Note Edited: 0020154
2012-09-13 03:03 wpostma416 Note Added: 0020184
2013-01-15 15:30 obones Note Added: 0020358
2013-01-15 15:30 obones Status new => resolved
2013-01-15 15:30 obones Resolution open => no change required
2013-01-15 15:30 obones Assigned To => obones