标签: delphi-7

Delphi 7 中动态数组作为可选参数

是否可以将动态数组作为可选参数传递给函数或过程?如果是,怎么办?

我已经尝试过这种方式:

procedure testp (str : string; var arr : StringArray = nil);
begin
    str := 'Ciao Alessio !';
    SetLength(arr, 2);
    arr[0] := 'Ale';
    arr[1] := 'Ale';
end;
Run Code Online (Sandbox Code Playgroud)

但它给出了:default parameter 'arr' must be by-value or const

我正在使用 Delphi 7,但如果 Delphi 7 无法使用,那么更新版本的 Delphi 或 Free Pascal 是否可以?

arrays delphi delphi-7 dynamic-arrays

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

如何修改 ShortcutToText 函数以返回不同的小键盘键结果?

该函数(在 Delphi 7 中)对于+等快捷方式返回与+ShortcutToText相同的结果。Ctrl1CtrlNumpad 1

如何修改此函数以返回数字键盘键的不同结果?

delphi delphi-7

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

如何在Delphi中使用TDbEdit设置价格小数点

如何在Delphi中的TDbEdit中设置小数点。

我是德尔福新手。

请帮助我如何在 tdbedit 中逐步设置。

例子:

66.33333
Run Code Online (Sandbox Code Playgroud)

预期结果

66.33
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

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

是否可以将 Form.Width 设置为 10000 像素?

当您编译空白表单并尝试用鼠标调整其宽度时,当它的客户端宽度接近屏幕分辨率宽度时,它可能会停止。

即使在设计器中也不可能设置更宽的形式。(很奇怪,我永远不会想到它会发生)。我也玩过约束,但这也不是解决方案。

是否可以将 Form.Width 设置为 10000 像素?

delphi delphi-7

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

任务栏上的图标不会移动到第二个显示器

我最近得到了一台新的开发计算机,同样有 2 个显示器,但不幸的是它有 Windows 10。
现在我还有一些仍在 Delphi 7 中开发的工具,它们可以工作,但有一个恼人的问题。

当我启动 Delphi 7 应用程序时,icon任务栏上的任务栏不会移动到第二个显示器。
任务栏设置为在打开的监视器的任务栏上显示图标。这适用于除 Delphi 7 应用程序之外的所有应用程序。
该图标始终保留在主显示器上。

我有可用的源代码,所以我想知道是否需要将某些内容放入源代码中,或设置一些属性才能使其正常工作?

谷歌搜索后发现很多情况下,表单没有移动到第二个显示器,但我没有在任务栏上找到任何有关该图标的信息。

delphi delphi-7

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

使 Windows 11 的 Application.Messagebox 外观现代化

有没有一种方法可以使Application.MessageBox()Win11 中的对话框外观现代化?也许通过创建清单文件或其他东西来使经典桌面应用程序看起来更新?

delphi messagebox delphi-7 windows-11

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

为Delphi 7 IDE编写脚本

Delphi是否有能力编写IDE操作的脚本?我想在open delphi项目上执行脚本打开一些单元.我怎么能这样做

delphi scripting delphi-7

0
推荐指数
1
解决办法
714
查看次数

在GetFileSize上更改数据类型大小

使用Delphi 7开发我们的主要应用程序.我们正在导入数据文件.以字节为单位的文件大小超过了vcl和我的代码用来保存它的整数变量的大小......所以它变为负数并且采取空文件操作......

我们当前检查文件大小的代码(从而决定是否为空)是:

function getfilesize(vfilename: string): integer;
var
  SearchRec: TSearchRec;
begin
    try
    result:= -1;
    if FindFirst(vfilename, faAnyFile, SearchRec) = 0 then
      result:= SearchRec.Size;
    FindClose(SearchRec);
    except
      on e: exception do
        raise exception.create('Error: functions\getfilesize - Unable to analyze file Attributes to determine filesize. '#13#10+e.message);
    end;
Run Code Online (Sandbox Code Playgroud)

多年来,这种情况来回变化,但在过去的5年里,这种方法运作良好.

searchrec.size是一个INTEGER,所以只更改我们的返回类型是不够的.存储中还有许多其他因素,与我们的代码和我们使用的数据库字段有关.

问:确定文件大小以字节为单位的其他D7方法对我们有用,它们使用更大的数据类型?

问:你知道getFilesize在更大整数中的任何其他替换函数吗?

delphi delphi-7

0
推荐指数
1
解决办法
2067
查看次数

如何在Delphi中模拟Canvas上文本的选择/取消选择?

我想在Canvas上模拟Delphi 7中文本的选择/取消选择(如在TEdit中).我使用FillRect来改变背景颜色,使用TextOut来绘制文本.但我需要知道4种颜色值:

  • 未选文本;

  • 选定的文字;

  • 未选文本的背景;

  • 所选文本的背景.

当用户更改Windows主题或编辑窗口外观时,这些值会发生变化.对于Windows XP中的经典主题,值为:clBlack,clWhite,clWhite,clNavy.也许在Delphi中有cl*常量或者我必须使用Api函数来获取它们.有谁知道怎么样?谢谢.

delphi canvas delphi-7 selection

0
推荐指数
1
解决办法
432
查看次数

WindowFreeze VCL

我有一个Delphi7项目,大约有10个窗口.程序启动时会加载MainWindow.过了一会儿,MainWindow访问项目的另一个窗口,添加listview项目,并在1-2秒内更新它们.然而,在我打开它之后,这个窗口似乎冻结了并且根本没有显示列表视图.

如果我在MainWindow的OnShow过程中有以下命令,它可以工作:

SecondWindow.Show;
SecondWindow.Close;
Run Code Online (Sandbox Code Playgroud)

它没有问题,但似乎不专业.任何想法如何绘制窗口而不显示?

编辑:代码(我使用Indy9)

procedure TMainWindow.ServerSocketExecute(AThread: TIdPeerThread);
begin
 /....
 if Buffer = 'additem' then begin
    Window2.ListView1.Items.Add;
    Exit;
    // .....
 end;
end;
Run Code Online (Sandbox Code Playgroud)

而已.我删除了Window2上的所有计时器,似乎仍然要冻结.如果添加了一个项目或者我第一次尝试打开第二个Windows时,mainWindow会立即冻结.

delphi multithreading vcl indy delphi-7

0
推荐指数
1
解决办法
235
查看次数