小编mgh*_*hie的帖子

在inno设置中,如何使用产品名称,产品版本和版权属性设置unins000.exe

我使用inno setup创建了一个安装程序.一切正常,但安装后会生成unins000.exe,此exe文件没有设置产品名称,产品版本和版权属性.任何人都可以解释我如何构建安装程序,以便unins000.exe将包含这些字段.

inno-setup uninstallation

9
推荐指数
1
解决办法
2625
查看次数

Delphi拖动可以"升级"到对接吗?

我有一个TPageControl页面都是使用附加的各种形式ManualDock().用户应该能够通过拖动来重新排列选项卡,这已经有效.然而,也应该可以移除停靠的表格.

现在我有以下代码:

procedure TMainForm.PageControlMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbLeft) and (Shift * [ssShift, ssCtrl] = [])
    and PageControl.DockSite
  then begin
    PageControl.BeginDrag(False, 32);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

如果按住键ShiftCtrl键,则将启动对接操作,否则可以通过拖动来重新排列选项卡.

使用键作为修饰符是很尴尬的.当鼠标光标位于页面控件的选项卡区域之外时,有没有办法取消活动拖动操作,并开始对接子窗体?这是Delphi 2009.

delphi drag-and-drop docking

9
推荐指数
1
解决办法
1971
查看次数

如何设置大于1096像素的表格高度?

我正在使用C++ Builder XE7并遇到一个奇怪的问题.我需要一个大约1500像素的表格高度.问题是对象检查器不允许我指定大于1096像素的值.如果我设置任何更大的值,它将自动设置为1096 ..任何现有或新的表单上都存在问题.我使用的是Windows 7,屏幕分辨率为1920x1080.

delphi vcl c++builder

9
推荐指数
1
解决办法
938
查看次数

Delphi:检查文件是否正在使用中

我想写/删除文件,但有时如果该文件被另一个程序使用,我会崩溃.如何检查文件是否由其他进程打开,或者我可以打开它进行写入?

delphi file handle

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

有没有人用Delphi编程VST?

有没有人使用Delphi编程Virtual Studio Technology插件?

delphi vst

8
推荐指数
2
解决办法
2284
查看次数

允许两个线程同时编辑同一对象的不同属性是否安全?

我正在编写一个编目应用程序,它解析并从文件中提取信息,并将每个文件中的信息存储在一个对象实例中.除了从文件中提取的数据外,对象还具有其他元数据属性(作者,标签,注释等),这些属性稍后将存储在单独的XML文件中.

从文件中提取数据是一个耗时的过程,所以我让它在一个单独的线程上运行.从文件中提取的属性将仅来自文件,因此具有[ReadOnly]属性以防止用户编辑它们.另一方面,元数据属性仅由用户填充,因此不是只读的.我允许用户通过PropertyGrid查看/编辑这些对象.

因此,如果提取过程在一个填充对象文件属性的线程上运行,那么让用户同时编辑元数据属性是否有任何危险?我试图决定是否应该使用模式接口来阻止用户在提取完成/取消之前做任何事情,或者使用非模态接口来允许它们在提取运行时继续工作.

.net c# multithreading properties thread-safety

8
推荐指数
1
解决办法
1061
查看次数

在Delphi 2010中将文件添加到DPR文件与项目路径

我们正在从D7迁移到D2010,并正在就清理项目路径进行辩论.我们有许多目录,其中包含大量的Pas文件,这些目录包含在某些项目路径中,但实际上只有少数文件被任何单个项目使用.

一种选择是完全消除项目路径,并且只在dpr中使用所有已使用的文件.

第二个选项是仅保留dpr中所需的文件,并具有指向其余文件的目录的项目路径.

对于另一个选项,是否存在任何争议?

delphi delphi-2010

8
推荐指数
2
解决办法
2109
查看次数

TVirtualStringTree - 重置非可视节点和内存消耗

我有一个应用程序,从二进制日志文件加载记录,并在虚拟TListView中显示它们.文件中可能有数百万条记录,用户可以过滤显示,因此我不会一次加载内存中的所有记录,并且ListView项目索引不是一对一的关系.文件记录偏移(例如,列表项1可以是文件记录100).我使用ListView的OnDataHint事件来加载ListView实际感兴趣的项目的记录.当用户滚动时,OnDataHint指定的范围发生变化,允许我释放不在新范围内的记录,并分配新记录如所须.

这样工作正常,速度可以忍受,并且内存占用非常低.

我目前正在评估TVirtualStringTree作为TListView的替代品,主要是因为我想添加扩展/折叠跨越多行的记录的能力(我可以通过动态递增/递减项目计数来使用TListView来捏造它,但这不是像使用真正的树一样直接).

在大多数情况下,我已经能够移植TListView逻辑并让一切工作正常.我注意到TVirtualStringTree的虚拟范例有很大的不同.它没有与TListView相同的OnDataHint功能(我可以使用OnScroll事件伪造它,这允许我的内存缓冲逻辑继续工作),我可以使用OnInitializeNode事件将节点与分配的记录相关联.

但是,一旦树节点初始化,它就会看到它在树的生命周期内保持初始化状态.这对我不好.当用户滚动并从内存中删除记录时,我需要重置那些非可视节点,而不是完全从树中删除它们,或者丢失它们的展开/折叠状态.当用户将它们滚动回视图时,我可以重新分配记录并重新初始化节点.基本上,就虚拟化而言,我希望尽可能使TVirtualStringTree像TListView一样.

我已经看到TVirtualStringTree有一个ResetNode()方法,但每次尝试使用它时都会遇到各种错误.我一定是错了.我还想过将每个节点内的数据指针存储到我的记录缓冲区中,然后分配并释放内存,相应地更新这些指针.最终效果也不是很好.

更糟糕的是,我最大的测试日志文件中有大约500万条记录.如果我一次初始化具有那么多节点的TVirtualStringTree(当日志显示未经过滤时),那么树的内部开销就会占用高达260MB的内存(还没有分配任何记录).而使用TListView,加载相同的日志文件及其背后的所有内存逻辑,我可以使用几个MB.

有任何想法吗?

delphi vcl c++builder virtualtreeview

8
推荐指数
1
解决办法
2791
查看次数

是否可以创建仅接受具有特定属性的类型的泛型类

我想创建一个类"指标",它将接受"控制"并设置其"图像"属性.

由于Control没有Image属性,我想实现一个模板类("Indicator"),它只接受具有此属性的类(Image).

可能吗?

c# generics winforms

8
推荐指数
1
解决办法
190
查看次数

Delphi,MDI vs Tabs用于多文档界面

我正在开发一个多文档应用程序.目前它使用MDI,这对我(作为开发人员)以及我相信的用户来说非常方便.然而,有一个"反对" - 我没有找到快速加载许多子窗口的解决方案(每次创建窗口并最大化以填充父级区域时,有一个'动画'调整大小需要花费大量时间到目前为止,我正在考虑切换回选项卡界面(这需要更多的工作,我需要将一个表单"嵌入"到页面表,因为有许多"种类"的表单可用,一些用于编辑文本文档,一些用于其他对象)...

所以,你有什么看法?我应该使用MDI还是标签界面?

delphi tabs mdi interface

7
推荐指数
3
解决办法
6014
查看次数