标签: vcl

Form.Release + NIL

如果在使用表单后调用Form.Release,它将释放所有相关内存但不将表单变量设置为nil.

if not assigned (Form1) then
  begin
    Application.CreateForm(Tform1, Form1);
    try
      // Do something
    finally
      Form1.Release
    end;
  end;
Run Code Online (Sandbox Code Playgroud)

为了能够再次调用相同的代码,Form1必须在某个时候设置为nil.从发布的描述我做不到

Form1 := nil;
Run Code Online (Sandbox Code Playgroud)

在Release之后,因为Release程序将在被调用之后和实际释放表单之前直接返回.我无法检测Form.Release何时完成将表单var设置为nil.

做这个的最好方式是什么?

delphi winapi vcl

11
推荐指数
3
解决办法
7278
查看次数

我可以在调试C++应用程序时进入VCL(Pascal)代码吗?

我有一个Delphi应用程序,我们正在迁移到C++.在调试我的Delphi代码时,我经常做的一件事是进入VCL本身,以准确了解正在发生的事情,以跟踪​​一些错误.这在C++ Builder中是否可行?

假设我在C++ Builder中,我称之为"ShowMessage".我可以在调试会话中进入该调用并动态切换到Pascal吗?

delphi debugging vcl c++builder

11
推荐指数
1
解决办法
1646
查看次数

将Borland C++ Builder移植到Qt

我必须在Windows 7/mingw下使用g ++将一个项目从Windows XP下的Borland C++ Builder 5.0移植到Qt 4.7.1.库和命令行实用程序已经完成,现在我必须处理使用Borland VCL的GUI应用程序.
任何人都可以推荐任何工具或库来简化这项任务吗?
有没有人有这方面的经验?

编辑补充说:好吧,我采取了牛角,并从头开始实施GUI.我不得不说,评论员是对的:我看不出任何使用现有Borland GUI来简化流程的方法.

user-interface qt porting vcl c++builder

11
推荐指数
1
解决办法
4163
查看次数

TControlState.csDesignerHide与TControlStyle.csNoDesignVisible

VCL似乎提供了两种隐藏表单设计者控件的机制:TControlState.csDesignerHideTControlStyle.csNoDesignVisible.

就IDE而言,它们之间有什么区别?你应该在什么时候使用?

delphi vcl

11
推荐指数
1
解决办法
613
查看次数

如何在一组中设置两个radiobutton而在另一组中设置两个?

我的表单上总共有4个单选按钮,我想在一组中设置前两个按钮,在另一组中设置第二个按钮,这样我就可以从第一组中检查一个,从第二组中检查一个.

现在,如果我从第一组中检查一个,则第二组中的一个将被取消选中.

我一直想知道如何做到这一点,我相信现在是时候弄明白了.:)

delphi vcl

10
推荐指数
1
解决办法
2万
查看次数

如何删除页面控件与其选项卡表之间的边距?

我注意到TPageControl中TTabSheet的Left属性始终为4.因此,TPageControl边框与TTabSheet中的控件之间始终至少有4像素的边距.我想将此边距设置为0(至少对于左边框),但我不能将TTabSheet.Left设置为0; 它总是自动恢复为4像素.

我试图在OnResize for TTabSheet和TTabControl中设置Left属性,但它没有帮助.

如何将此边距减少到0(至少对于左边框)?我正在使用C++ Builder 6.

delphi vcl c++builder c++builder-6

10
推荐指数
1
解决办法
2807
查看次数

Delphi控件中的Ctrl + Backspace

Ctrl+Backspace键盘快捷键正常删除的话,从插入符左侧.但它不工作在任何标准的德尔福控制你所期望的(TEdit,TMemo,TComboBox等.).有趣的是,Ctrl+Delete工作得很好.

有人知道如何轻松纠正这种行为吗?

我知道重写KeyDown程序会做到这一点,但这是一个相当复杂的事情,因为KeyDown必须为每个组件重写.

delphi vcl

10
推荐指数
1
解决办法
1104
查看次数

如何修复TPageControl背景颜色而不丢失系统主题?

在启用了主题的Delphi 2010应用程序中,我在一个带有clMoneyGreen背景的表单中有两个TPageControl(一个在另一个内):

在此输入图像描述

外部页面控件正确地使用父组件的颜色绘制其背景,然而内部页面控件使用clBtnFace(图像中的红色省略号)而不是其父控件(TTabSheet)的白色绘制其背景.有没有办法解决这个问题,而无需将页面控件返回到其Windows经典外观(丢失Windows主题)?

我在Google和Stack Overflow中找到的所有修复都涉及OwnerDraw,这使得页面控件失去了主题.

我尝试使用一种方法来创建从TPageControl继承的新页面控件组件来处理WM_ERASEBKGND窗口消息:

procedure TMyPageControl.WMEraseBkGnd(var Msg: TWMEraseBkGnd);
begin
  if Parent is TCustomPageControl then
  begin
    Brush.Color := clWhite;
    Windows.FillRect(Msg.dc, ClientRect, Brush.Handle);
    Msg.Result := 1;
  end
  else
    inherited;
end;
Run Code Online (Sandbox Code Playgroud)

它描绘了背景白色,但在WM_ERASEBKGND(我猜测TWinControl的WM_PAINT方法)之后调用的其他一些方法在白色背景上重新绘制灰色.

注意:我正在研究这个,因为我正在从Delphi 7移植的大型应用程序上实现主题,这就是我试图通过派生组件解决这个问题的原因:我可以轻松搜索和替换所有207 TPageControl事件与我的新课程,但在其中一些面板后面放置需要更多时间.

delphi vcl delphi-2010

10
推荐指数
1
解决办法
5472
查看次数

Delphi在应用程序运行时更改主窗体

我有这个问题.当我隐藏我的主窗体时,我的应用程序的任务栏图标也被隐藏.我也看到了一个关于这个问题的新问题,答案并没有真正帮助.他们建议尽量减少它,但我不想最小化应用程序.

应用程序运行时是否可以更改主窗体?

例如.我有两种形式.当我想隐藏一个表单并显示另一个表单时,任务栏图标应保留在任务栏上,主表单应切换到另一个表单.

我使用的是Delphi XE6,它是一个VCL Forms应用程序.

我还看到了一个关于在运行时更改主窗体的一个不同的老问题,但它很老,仍然基于Delphi 6.

forms delphi vcl taskbar delphi-xe6

10
推荐指数
3
解决办法
9629
查看次数

德尔福 - 形式内的形式

出于审美原因,我想在另一个表单的顶部显示一个表单,就好像它是一个组件,就像TPanel一样.它应该与父级一起调整大小,随着标题栏的标记栏等对其进行移动.

-----------------------------
| main form component 1     |
-----------------------------
| main |  the 'embedded'    |  
| form |  form goes here    |
|comp 2|                    |
-----------------------------
Run Code Online (Sandbox Code Playgroud)

我能这样做吗?如果是这样的话?


我现在倾向于MDI ......

delphi vcl c++builder

9
推荐指数
2
解决办法
5228
查看次数