相关疑难解决方法(0)

根据需要在运行时更改组件类

我的问题类似于这里的想法:在delphi中替换组件类.
但我需要根据需要更改特定的组件类.
这是一些伪演示代码:

unit Unit1;

TForm1 = class(TForm)
  ImageList1: TImageList;
  ImageList2: TImageList;
private
  ImageList3: TImageList;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ImageList3 := TImageList.Create(Self);
  // all instances of TImageList run as usual
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Unit2.MakeSuperImageList(ImageList2);
  Unit2.MakeSuperImageList(ImageList3);
  // from now on ONLY ImageList2 and ImageList3 are TSuperImageList
  // ImageList1 is unchanged
end;
Run Code Online (Sandbox Code Playgroud)
unit Unit2;

type
  TSuperImageList = class(Controls.TImageList)
  protected
    procedure DoDraw(Index: Integer; Canvas: TCanvas; X, Y: Integer;
      Style: Cardinal; Enabled: Boolean = True); override;
  end; …
Run Code Online (Sandbox Code Playgroud)

delphi vcl delphi-5

16
推荐指数
2
解决办法
3825
查看次数

Delphi - 在运行时使用图标填充图像列表'破坏'透明度

我花了几个小时来完成这个(简单的)并且找不到解决方案:/

我正在使用D7和TImageList.ImageList被分配给工具栏.当我在设计时填充ImageList时,图标(具有部分透明度)看起来很好.但我需要在运行时填充它,当我这样做时,图标看起来很糟糕 - 完全松散了部分透明度.

我只是尝试从.res文件中加载图标 - 结果相同.我尝试过第三方图像列表也没有成功.我不知道我能做什么:/谢谢2所有;)

编辑:

说实话,我不知道到底发生了什么.Alpha混合是相关术语......这里有两个屏幕:

在设计时添加的图标: 替代文字http://shs-it.de/tmp/icon-designtime.JPG

在运行时添加的图标: 替代文字http://shs-it.de/tmp/icon-runtime.JPG

您不支持Alpha混合的评论带来了解决方案:我在编辑器中编辑了图像并删除了"alpha混合"像素 - 现在它看起来很好.但是,在运行时添加图标而不是设计时,图标看起来仍然很奇怪.如果你(或其他人)可以解释它,我会很高兴;)感谢您的支持!

delphi icons imagelist

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

将Windows主题应用于Office Com加载项

多年来,Delphi一直支持"应用程序设置"选项卡上的" 启用运行时主题"开关.但是,这仅适用于可执行文件.假设DLL从其父应用程序接管主题(和其他)设置.

不幸的是,Microsoft Office在那里玩得不好.他们的"主题"外观是使用自定义控件实现的,而不是通过Windows自己的通用控件实现的.

在MSDN文章830033中 - 如何将Windows XP主题应用于Office COM加载项 Microsoft解释了如何将清单应用于DLL,使其成为隔离感知,以便忽略来自父进程的设置.

基本上,它分为两个步骤:

  1. 使用int-resource id为2(而不是通常使用的1),在进程中包含缺省清单资源.
  2. 使用ISOLATION_AWARE_ENABLED定义进行编译.**Delphi中没有.**

我认为我已经确定了(1)已经确定了,尽管我不确定brcc32是将整个资源ID作为整数还是作为文字字符串.真正的问题在于(2).据推测,这个定义改变了几个DLL函数绑定.

有人在Delphi中解决了这个问题吗?我是否应该进一步研究这条路线,我应该尝试手动创建激活上下文,还是有其他优雅的解决方案来解决这个问题?

delphi dll theming ms-office

6
推荐指数
1
解决办法
1216
查看次数

标签 统计

delphi ×3

delphi-5 ×1

dll ×1

icons ×1

imagelist ×1

ms-office ×1

theming ×1

vcl ×1