标签: vcl

链接失败[ilink32错误]致命:无法打开文件'TYPES.OBJ'

我一直在使用C++ Builder 2010更新旧的遗留项目构建代码,以便使用C++ Builder 10 Seattle进行编译.我主要不得不改变路径,很多dupIgnoreTDuplicates::dupIgnore,重新导入像一些组件MSXMLMSMQ等.

首先是主要项目以bpl和dll的形式使用的一堆子项目,最后是主项目的代码编译.

但是......它没有链接:P

[ilink32 Error] Fatal: Unable to open file 'TYPES.OBJ'
Run Code Online (Sandbox Code Playgroud)

我试图找到有关潜在问题的信息,许多提及确保在Delphi编译器设置下的单元范围System提供.但这已经存在于这个项目中.还有什么可能导致这个?

有关信息.现在使用"经典"bcc32编译器编译.

包含路径:

$(BDSINCLUDE)\windows\vcl;$(BDSINCLUDE)\dinkumware;

图书馆路径:

$(BDSLIB)\$(PLATFORM)\$(Config);$(BDSLIB)\$(PLATFORM)\Release\psdk;
Run Code Online (Sandbox Code Playgroud)

vcl c++builder c++builder-10-seattle

55
推荐指数
1
解决办法
4586
查看次数

Refresh,Update和Repaint有什么区别?

我不知道这三种方法中哪一种最适合我.他们都为我工作.有谁知道刷新,更新和重绘之间的区别?

delphi vcl

42
推荐指数
2
解决办法
6万
查看次数

wsMaximized表单似乎没有最大化

将表单设置为WindowState = wsMaximized有时会使表单最大化但不会:

在此输入图像描述

长期错误:这是我在2003年首次在Borland新闻组中提出的一个问题:

然后在2006年:

然后在2008年再次:

有人在2012年的Embarcadero论坛上提出这个问题:

现在是时候将18岁的bug移植到Stackoverflow了.也许某人终于想出了一个解决方法.

重现的步骤:

我的帖子包含了六种失败模式,但最简单的是:

  • 删除表单上的a LabelEdita:

    在此输入图像描述

  • 为以下内容添加OnEnter活动TEdit:

    procedure TForm1.Edit1Enter(Sender: TObject);
    begin
       Label1.Font.Style := Label1.Font.Style + [fsBold];
    end;
    
    Run Code Online (Sandbox Code Playgroud)
  • 并设置表格:

    • WindowStatewsMaximized
    • AutoScroll

而bazinga,失败了.

2008年帖子的另一组步骤之一:

  1. 创建一个新的应用程序和一个表单.
  2. 在设计时将表单设置为最大化(WindowState = wsMaximized).
  3. 删除窗体上的ListView控件
  4. 在OnShow期间,将20个空项添加到列表视图中:

    procedure TForm1.FormShow(Sender: TObject);
    var
         i: Integer;
    begin
         for i := 1 to 20 do
              ListView1.Items.Add;
    
    end;
    
    Run Code Online (Sandbox Code Playgroud)
  5. 在设计时将表单的AutoScroll属性设置为false(AutoScroll = False)

当然,我没有追求的是"在n …

delphi vcl delphi-7 delphi-5

36
推荐指数
3
解决办法
1万
查看次数

Delphi XE2 VCL样式,更新字幕块其他控件失效

发现VCL样式的故障:当您更新表单标题时,之前在同一过程中重绘的其他控件不会重新绘制,并且您被迫调用Repaint,从而丢失了重绘的宝贵处理时间.

示例:(手动设置项目选项/ vcl样式)

unit Unit11;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;

type
  TForm11 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form11: TForm11;

implementation

{$R *.dfm}

procedure TForm11.Button1Click(Sender: TObject);
begin
  Panel1.Caption := 'test';
  caption := 'glitch';
end;

end.

object Form11: TForm11
  Left = 0
  Top = 0
  Caption = 'Form11'
  ClientHeight = 89
  ClientWidth = 352
  Color = clBtnFace
  Font.Charset …
Run Code Online (Sandbox Code Playgroud)

delphi vcl styles skinning delphi-xe2

25
推荐指数
1
解决办法
1297
查看次数

Delphi XE2:可以在VCL应用程序中实例化FireMonkey表单吗?

在Delphi XE2之前,我们只使用VCL来创建GUI应用程序.Delphi XE2声明:

警告:FireMonkey(FMX)和可视组件库(VCL)不兼容,不能在同一项目或应用程序中使用.也就是说,应用程序必须只有一个或另一个,FireMonkey或VCL.不兼容性是由FireMonkey(FMX)和VCL之间的框架差异引起的.

我的应用程序是一个使用运行时包构建的纯VCL应用程序.所有VCL表单都存储在运行时包中.如果我要创建一个FireMonkey表单并存储在一个包中,我是否有机会在运行时在我的VCL应用程序中实例化这个FireMonkey表单?所以我可能会喜欢FireMonkey的3D或HD效果.

delphi vcl delphi-xe2 firemonkey

24
推荐指数
3
解决办法
8263
查看次数

Delphi VCL组件的"Tag"属性的目的是什么?

Delphi VCL组件的"Tag"属性是否有任何特定用途?我用Google搜索了几个例子,例如,使用'color'属性或者使用值作为指针地址,但使用它是"好习惯",还是因为它与UI的程序逻辑?

delphi user-interface vcl

22
推荐指数
4
解决办法
1万
查看次数

如何将鼠标悬停在最小化,最大化和关闭按钮上?

在Delphi应用程序中,当您将鼠标悬停在边框图标上时,例如:

  • 最小化
  • 最大化
  • 恢复

它行为不正确:

在此输入图像描述

与行为正确的应用程序进行比较:

在此输入图像描述

重现的步骤

  1. 单击文件,新建,VCL表单应用程序 - Delphi
  2. 单击运行(F9)
  3. 将鼠标悬停在最小化,最大化或关闭按钮上.

怎么修?

  • Windows 10,64位(在台式机上本机运行)
  • 德尔福XE6

编辑 - Delphi 7也失败了:

在此输入图像描述

在Delphi 5中:

在此输入图像描述

在Delphi 4中:

在此输入图像描述

我假设(即害怕)它是由ThemeServices引擎引起的; 他们可能认为不尊重用户的偏好很酷.但看起来它更基本.

兼容模式

  • none:失败
  • Windows 8:失败
  • Windows 7:失败
  • Windows Vista(Service Pack 2):失败
  • Windows Vista(Service Pack 2):失败
  • Windows Vista:失败
  • Windows XP(Service Pack 3)(禁用非客户区域主题):有效
  • Windows XP(Service Pack 2)(禁用非客户区域主题):有效
  • Windows 98/Windows Me(禁用非客户区域主题):有效
  • Windows 95(非客户区域主题禁用):工作

Skype的

Skype也失败了; 也用Delphi编写:

在此输入图像描述

高DPI是触发器

我终于找到了为什么它在我使用的每台Windows 10机器上都失败了; 但不适合所有人.高dpi.

将dpi设置为97(101%)或更高.

足够近 …

delphi vcl delphi-xe6 windows-10

20
推荐指数
1
解决办法
2107
查看次数

加载Jpg/Gif/Bitmap并转换为Bitmap

我必须从XML文件加载图像.XML文件中没有关于图像是否为JPG/GIF/BMP的信息.加载图像后,我需要将其转换为Bitmap.

有没有人知道如何在不知道实际文件格式的情况下将图像转换为Bitmap?我正在使用Delphi 2007/2009

谢谢.

delphi vcl file-format bitmap image-processing

16
推荐指数
4
解决办法
8万
查看次数

有没有Delphi XE2样式库?

在XE2中有一个新功能:'styles',用于VCL(.vsf)和Firemonkey( .styles),还有一些在C:\ Program Files\Embarcadero\RAD Studio\9.0\Redist\styles目录中提供.

由于创建新样式似乎很容易,有没有"样式库"网站或博客?

delphi vcl delphi-xe2 firemonkey vcl-styles

16
推荐指数
1
解决办法
8577
查看次数

如何在Delphi Seattle中运行时DPI更改后处理菜单缩放

当对表单类添加了对运行时DPI切换的支持时,没有考虑像菜单这样的基本UI元素.

菜单绘图从根本上被打破,因为它依赖于Screen.MenuFont,这是一个系统范围的度量,不是特定于监视器.因此,虽然表单本身可以相对简单地进行适当缩放,但是显示在其上的菜单只有在缩放恰好匹配加载到Screen对象中的任何度量标准时才能正常工作.

这是主菜单栏,弹出菜单和表单上所有弹出菜单的问题.如果将表单移动到具有与系统指标不同的DPI的监视器,则这些都不会缩放.

真正做到这一点的唯一方法是修复VCL.等待Embarcadero充实多DPI并不是一个真正的选择.

查看VCL代码,基本问题是Screen.MenuFont属性被分配给菜单画布,而不是选择适合显示菜单的监视器的字体.只需在VCL源代码中搜索Screen.MenuFont即可找到受影响的类.

在不必完全重写所涉及的类的情况下,解决此限制的正确方法是什么?

我的第一个倾向是使用绕行来跟踪菜单弹出窗口并在用于设置菜单时覆盖Screen.MenuFont属性.这似乎太过分了.

delphi vcl multiple-monitors dpi

16
推荐指数
1
解决办法
2159
查看次数