Project JEDI - Issue Tracker
Mantis Bugtracker

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0005974 [JEDI VCL] 00 JVCL Components minor have not tried 2012-08-31 11:05 2013-01-15 15:30
Reporter Melenkurion View Status public  
Assigned To obones
Priority normal Resolution no change required  
Status resolved   Product Version
Summary 0005974: TJvDockServer and dockable controls
Description Good 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 Information 2 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.
Tags Delphi 2006
Attached Files zip file icon HowToUse.zip [^] (3,311,735 bytes) 2012-08-31 11:05
rar file icon JVCL-0005974_bug_demo.rar [^] (373,348 bytes) 2012-08-31 15:37

- Relationships
child of 0005271confirmedwpostma416 Bug in TJvDockServer, TJvDockClient 

-  Notes
(0020141)
Arioch (developer)
2012-08-31 15:37

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.
(0020146)
Arioch (developer)
2012-08-31 18:32

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
(0020151)
Melenkurion (reporter)
2012-09-03 10:39

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?
(0020152)
Arioch (developer)
2012-09-03 10:43
edited on: 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 ?..

(0020153)
Arioch (developer)
2012-09-03 11:03
edited on: 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

(0020154)
Arioch (developer)
2012-09-03 11:23
edited on: 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)

(0020184)
wpostma416 (developer)
2012-09-13 03:03

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 [^]
(0020358)
obones (administrator)
2013-01-15 15:30

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


Mantis 1.1.6[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker