我们想将可移动面板添加到应用程序中.目前我们已经使用了DevExpress对接库,但发现它们令人失望地古怪且难以使用.它也有一些不太好的限制.
通过拖放自动隐藏,固定和移动页面都是我们想要使用的功能.
内置的delphi对接似乎没有足够的功能来完成我们需要的东西(另见下面的示例).也许我应该深入研究delphi的对接能力......我最初的印象是它们看起来非常像工具栏,而不是我可以放入框架的东西.
我在对接主题方面没有经验.我唯一的经验是使用DevExpress对接库,我需要以编程方式创建和停靠面板.
是我的想象力还是DevExpress的产品过于难以使用/学习?与d2009 Ribbon Bar相比,DevExpress Ribbon Bar组件确实是一种有用的体验.我会尽快迁移到d2009功能区栏.这是令人耳目一新的直接学习和使用.与DevExpress相当的鲜明对比.如果使用DevExpress等效物需要4倍的时间,那么就该改变方向了.
关于停靠库,您有什么建议?
谢谢你的建议/意见!
我为Visual Studio 2008编写了一个简单的加载项,用于打开可停靠的窗口窗格.
加载项的性质意味着理想情况下它将停靠在编辑源的位置旁边.但有时候,在某些安装中,它不会停留在停靠状态.你运行VS,你停靠我的窗格,你关闭VS,你重新启动VS,然后敲响它 - 窗格再次浮动.在某些机器上,我每次都要重新对接它.
但是在其他安装中,无论我将它永远放在哪里,它都会停靠.我原本以为它可能是Vista和XP之间的区别,但现在我有报道称它在XP上也没有出现.
从我读过的内容(以及它有时会停留的事实)我得到的印象是VS应该为我保存对接状态.但事实并非如此.而在同一VS安装上的其他插件没有这个问题.所以我必须做些什么才能改善这种状况.
我怀疑我的代码中唯一相关的部分是这样的:
public class Connect : IDTExtensibility2
{
private static DTE2 _applicationObject;
private AddIn _addInInstance;
private static CodeModelEvents _codeModelEvents;
public static DTE2 VisualStudioApplication
{
get { return _applicationObject; }
}
public static CodeModelEvents CodeModelEvents
{
get { return _codeModelEvents; }
}
public static event EventHandler SourceChanged = delegate { };
public void OnConnection(object application,
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
}
public void OnStartupComplete(ref …Run Code Online (Sandbox Code Playgroud) add-in visual-studio-addins docking visual-studio-2008 visual-studio
我想在Qt中创建一个应用程序,其中QTabBar中的选项卡可以"取消停靠",因此它们将成为一个浮动窗口,或者可以拖入另一个QTabBar并"转移"到该QTabBar中.我的目标是让用户通过相互拖动模块来完全自定义界面.
如果您曾经使用过Adobe After Effects CS5,它具有我正在寻找的确切效果.它允许您拖动选项卡并使其浮动为其自己的窗口,将其停靠到另一个选项卡页面并执行更多操作.
所以,如果有人能指出我如何解决这个问题的正确方向,或者甚至在我开始的时候那将会很棒!
如果(在Delphi中)我这样做
Panel1.ManualFloat(Rect(500,500,600,600));
Run Code Online (Sandbox Code Playgroud)
面板不是浮动在指定的Rect位置,而是浮动在某种窗口的默认位置.如何让面板(或其他控件)浮动到指定位置.但它似乎确实具有正确的形状.我需要设置一些其他属性才能使其正常工作吗?
编辑:只是为了清楚.我希望上面的代码使得面板相对于屏幕的左上角位于(500x500)的100x100正方形,而不是.形状是正确的,但位置不正确.如果后续控件浮动,则它们在屏幕上级联.
编辑2:这在Delphi 7中似乎不是问题,但在Delphi 2007中通过XE2(可能更早)
我有一个油漆盒,我希望用户能够移除和移动.所以我设置了DragKind以dkDock及其DragMode对dmAutomatic,并把它在面板内部与DockSite集来True.当我将油漆盒与浮动形状脱开后,我在遇到油漆盒时会遇到一种相当奇怪的行为.浮动窗体的关闭按钮出现在面板内.我附上了两个截图.一个来自原始状态,一个再次对接油漆盒.我错过了什么?
原始状态:

对接后:

更新 使用TLama的解决方案后,结果如下.

我需要一个像AvalonDock这样的对接系统用于一个项目,但它似乎最后一次更新于2013年6月.是否有更多...积极开发我可以使用它?
在我们开发的QT应用程序中,我们需要显示几个"查看器窗口"(以在XY平面,YX平面,XZ平面和3D中显示数据).
我们希望使用MDI应用程序模型,但后来客户端要求在多个桌面中拖动和查看"查看器窗口"(使用多个监视器).使用MDI窗口模型无法完成此操作,因为我们无法在主应用程序窗口之外移动MDI窗口.
唯一可能的方法是使用Dock窗口,因为它们可以从主应用程序窗口移除并移动到其他桌面,但Dock窗口主要用于工具调色板或实用程序窗口.
(http://doc.qt.nokia.com/4.6/qdockwidget.html#details)
使用Dock窗口满足我们的要求是一个好习惯吗?
我正在创建一个公开工具窗口的Visual Studio包,我正在尝试确保在首次加载包时它显示为停靠在Visual Studio主窗口的左边缘.
[ProvideToolWindow(typeof(MyToolWindow), Orientation = ToolWindowOrientation.Left,
Style=VsDockStyle.Linked, Window=EnvDTE.Constants.vsWindowKindLinkedWindowFrame)])]
[ProvideToolWindowVisibility(typeof(MyToolWindow), VSConstants.UICONTEXT.NoSolution_string)]
public class MyPackage : Package
{
...
Run Code Online (Sandbox Code Playgroud)
我已经尝试了上述的许多变体,但我设法实现的最好的是将窗口停靠在底部 - 即使这样,每次重新加载包时它都会继续重新对接而不是持久化用户窗口位置.
如何指定我的窗格最初显示为停靠在主窗口的左侧?
我喜欢Google Chrome允许您从窗口中抓取标签以创建其他窗口的方式.有没有人知道在我的.Net应用程序中是否有办法进行这种对接和取消停靠的方式?或者更好的是,是否有人知道是否有可以提供此类功能的.Net组件?
我有一个应用程序(不是我的)使用CodeJock的AxXtremeDockingPane将可停靠的面板添加到应用程序.
AxXtremeDockingPane有一个调用的方法,调用AttachToWindow(int handle)该方法时会在窗口中创建一个对接管理器,提供句柄,可以是任何应用程序.
我想知道是否有任何其他免费/更便宜的对接控件可以让你做同样的事情?
我想要做的是,主应用程序(不是我的)在应用程序运行时在它的主窗口中创建一个停靠管理器,但是他们访问了AxXtremeDockingPane私有,这意味着我无法将自己的面板添加到主应用程序窗口.问题是如果您尝试创建一个新的AxXtremeDockingPane并AttachToWindow(int handle)使用主应用程序的句柄或任何子窗口调用它会抛出一个MemoryAccessViolation,因为那里已经有一个停靠管理器.
我想找到另一个可以做同样事情的套件,所以我可以在主窗口中创建一个新的对接管理器,所以在主窗口中有AxXtremeDockingPane和{other control}.
对不起有点难以解释.
有谁知道我怎么做,或知道任何工具.