- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是Delphi XE3。
当我创建一个新的 VCL 项目并在其上放置一个 TToolbar
时,一切正常 - 除非我激活 Form1.DoubleBuffered
。
从那时起,工具栏的绘制就被破坏了——在设计时,它要么是黑色的、透明的,要么是 IDE 的一部分(状态栏、工具栏等)被复制到其中。当我单击它以及更改为源代码 (F12) 并返回时,它会在这些选项之间发生变化。
在运行时,它始终是黑色的。
使用DrawingStyle=dsGradient
,一切都会按预期进行。切换回 dsNormal
再次破坏它。
停用 Form1.DoubleBuffered
可以修复它。
有任何关于如何解决该问题的提示吗?
最佳答案
我认为解决方案是将TForm.DoubleBuffered
设置为False
。使用 True
值会导致各种其他问题。此属性在 XP 主题之前工作得相当好,但在我看来,自它们出现以来,使用 TForm.DoubleBuffered
并不可行。
除了您遇到的问题之外,我在使用 Windows Basic 主题时还遇到了很多绘画缺陷。我知道这不是主流,但我碰巧在远程访问中经常看到这种情况。还有更多。当您对表单进行双缓冲时,您会停止主题动画的工作。例如,默认按钮发出脉冲以指示它是默认按钮。
如果您在没有双缓冲表单的情况下调整大小闪烁,请使用 ideas from my answer to another question 。从评论来看,您想要对抗的闪烁似乎是在油漆盒中。我显然不知道细节,但我的经验和直觉告诉我,你应该能够很容易地处理局部的闪烁。当然不需要全局表单宽双缓冲。
关于delphi - TToolbar 与 TForm.DoubleBuffered 不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15611807/
我经常将一个 TForm 后代嵌入到另一个 TForm 后代中,如下所示: var Form1: TForm1; Form2: TForm2; begin Form2.Parent
我注意到一些非常奇怪的事情。我在关闭表单时保留表单的顶部、左侧、宽度和高度属性,并使用此信息在通过使用先前存储的信息调用 SetBounds 再次打开表单时恢复表单的最后位置。这很有效,但前提是在设计
我已经在 stackoverflow 上找到了一些东西,但它并没有真正解决我的疑问。我知道创建对象的正确方法是在创建后将代码包围在 try-finally block 中。但是关于: procedur
我目前(在某些情况下依赖于配置文件)为多个表单创建父子关系。 也就是说一个父表单可以有多个子表单。 我遇到的问题是,当我最小化子窗体并且父窗口当前未最大化(我正在根据配置文件设置父窗体的大小)时,我丢
我有一个用 OwlNext 创建的主窗体,它调用一个在 vcl 中创建的对话框。 MyOtherFormClass Form2=new Form2(); void MyMainForm::ShowFo
我制作了一个 TForm 衍生产品,它的作用类似于组合的下拉部分、提示窗口或弹出菜单 - 一个临时的东西。它没有标题 - 它的 BorderStyle 设置为 bsNone。使用 Show 以非模态方
我正在尝试编写一个返回两个 TForm 之一的函数实例,根据用户设置的配置: function TfrmMain.GetCurrentRamEditFrm: TForm; { Get the RAM
我经常将主窗体句柄传递给其他线程,以便它们可以将消息发回主线程。我在 2013 年 9 月 28 日看到 Remy Lebeau 说: ...the TWinControl.Handle proper
我想使用泛型功能在Delphi 2010中实现单例模式。 type TgrsObj = class class function Singleton(O: T): T; static;
我正在编写一个组件,并希望将基本类型更改为 TForm,但是在运行时我收到错误“找不到资源 TMyComp”。我猜这是因为没有 dfm,但我不知道该怎么办。 谢谢 unit Unit65; inter
我的应用程序有一个主表单,该表单上有一个用于关闭/退出应用程序的按钮。目前它是通过调用 Windows 来关闭句柄编写的: SendMessage(Handle, WM_CLOSE, 0, 0); 但
我正在将一些函数转换为与 Windows 7 功能相关的 DLL。我无法通过 DLL 传递 TForm,因此我需要传递它的句柄。除了,一旦我在另一侧有了该句柄,如何将其重建回 TForm 实例?另外,
TForm.TipMode是什么?属性? 它已被添加到 Delphi XE3 中,但文档中没有提及此属性。 最佳答案 TTipMode 在 Controls.pas 中定义,用于跟踪位于 TabTip
我在 Delphi XE2 中编写了代码,运行完美。但在Delphi XE6中它不起作用。我创建了一个 Tform,其属性 AutoSize 为 true。我使用 TPanel 将 alTop 与按钮
当我显示一个表单时,我将它显示在上次使用 TForm.Left 的位置我保存在ini文件中的属性。 我想添加对多台显示器的支持,因为如果有 2 台显示器,Left 可以是 2500,所以 2 台显示器
我想制作使用tform作为参数的dll,简单的计划是如果将该表单传递给dll,则dll文件返回包含组件名称的数组。 可以将 tform 作为参数传递吗? 最佳答案 您的进程中很可能有两个 VCL 实例
作为 this question 的扩展: TForm.OnResize 有时会在首次显示表单之前触发,但并非总是如此。例如,如果 BorderStyle 为 bsDialog 或 bsNone,则
我目前正在为现有的 Delphi 应用程序编写一个窗口系统。 目前,该程序由许多全尺寸表单组成,这些表单按照需要的顺序以模态方式显示,并且用户无法移动其中任何一个。我的目标是让所有这些形式都可以移动。
这个问题看起来很简单,但由于某种原因我很难找到答案。 我有一个应用程序,可以将表单的大小和位置保存在 INI 文件中。这一切都很好,但是当您在最大化时关闭应用程序时,它将保存最大化表单的大小和位置,但
直到今天,我一直在使用以下代码来捕获应用程序主窗体中的 WM_DEVICECHANGE 消息,并且效果良好。但是,如果我尝试在自定义控件中使用它,我不会收到有关设备插入或删除的通知。发生了什么事?
我是一名优秀的程序员,十分优秀!