是否有IDE可以打开传统的Delphi 5项目?
Delphi XE似乎不支持delphi 5.
我的问题是如何使用TBookmark对象进行加法和减法等操作.例如,假设我想在dbgrid中高出4行:
MyPoint:=Query1.GetBookmark;
...
//MyPoint:=MyPoint-4;
Query1.GotoBookmark(MyPoint);
Run Code Online (Sandbox Code Playgroud)
这里的注释行是错误的.它生成"不适用于此操作数类型的运算符"消息.问题是我应该用什么来代替注释行.提前致谢!
我有三个DBGrids和三个表,其中两个与Master Fields链接并按预期工作.当用户单击grid-1时,它会在grid-2中显示三个项目.
当用户点击grid-2时,我想使用Locate选择grid-3中的Row
问题是在数据更改为适当的行之前触发了grid-2 OnCellClick事件.例如
Grid-2
Flowers <-- this has focus and Dirt has focus in grid-3
Weeds
Trees <-- then I click here
Grid-3
Dirt
Water
Gum <-- and using Locate in the grid-2 OnCellClick I
want it to show Gum but grid two is still
internally on Flowers and stays on Dirt
Run Code Online (Sandbox Code Playgroud)
似乎在OnCellClick事件之后,网格不会更改为Row.
我需要一个AfterCellClick事件.
有人可以说明如何去解决这个问题吗?
谢谢
我正在维护一个使用Delphi 5 Professional German构建的旧Delphi 5程序.
问题是所创建的可执行文件的所有对话框和错误消息都以德语显示,即使在位置设置为美国或英国的英语Windows上也是如此.
我是否需要英文版的Delphi 5 Pro或者是否有配置选项/编译器开关/选项来更改"输出语言"?
我不是在谈论IDE语言,我已经了解到我可以通过删除Delphi安装目录中的所有*.DE文件将其更改回英语.
例:



更新:根据我在源目录中查找德语消息的评论 - 我立即找到了几个文件:
Source/Rtl/Sys/comconst.pas
Source/Rtl/Sys/sysconst.pas
Source/Rtl/Sys/comconst.pas
Source/Vcl/bdeconst.pas
Source/Vcl/comstrs.pas
Source/Vcl/consts.pas
Source/Vcl/dbconsts.pas
Source/Vcl/ib.pas
Source/Vcl/oleconst.pas
Run Code Online (Sandbox Code Playgroud)
我希望有一个更简单的方法.不要以为我走这条路......
在某些系统上使用Cirtix时,Delphi 5中的TScrollBox存在问题,当用户通过单击滚动条末端顶部或底部的按钮滚动整个应用程序时会冻结.我们最初在QucikReports预览中遇到了问题,并通过在TScrollBox中实现我们自己的滚动条来解决它.
我们现在有一个使用TScrollBox的定制工作,客户端报告类似的问题,所以我以同样的方式解决它.我隐藏了TScrollBox滚动条并添加了我自己的滚动条.单击这些时,我会调用以下内容.
请注意,此测试代码目前尚未在Citrix中运行,我已经在XP和Window 7上进行了测试.
我正在关闭重绘控件,移动所有子控件,然后重新开启绘图并调用Invalidate.我希望invalidate完全重绘控件但是没有发生.
procedure TScrollBoxScrollReplacement.ScrollControls(x: Integer; y: Integer);
var
I: Integer;
begin
if (x = 0) and (y = 0) then
Exit;
// Stop the control from repaining while we're updating it
try
SendMessage(FScrollBox.Handle, WM_SETREDRAW, 0, 0);
for I := 0 to FScrollBox.ControlCount - 1 do
begin
if (FScrollBox.Controls[I] = FVScrollBar) or (FScrollBox.Controls[I] = FHScrollBar) then
Continue;
FScrollBox.Controls[I].Left := FScrollBox.Controls[I].Left + x;
FScrollBox.Controls[I].Top := FScrollBox.Controls[I].Top + y;
end;
finally
// Turn on painting again
SendMessage(FScrollBox.Handle, WM_SETREDRAW, 1, …Run Code Online (Sandbox Code Playgroud) 我有一个备份过程复制很多文件(CopyFileEx),每隔几分钟,Windows似乎需要休息,可能是分页或清除缓冲区或其他东西.在此期间,主窗体闪烁并在主标题中显示"未响应".
几秒钟后,它再次闪烁,消息已经消失,一切都与世界相关,并且过程继续进行.
有什么方法可以阻止眨眼和消息吗?
使用此免费软件为我当地的园艺俱乐部数据库更新一些 D5-ent 内容。
http://www.delphiarea.com/products/delphi-components/rotateimage/
它有一个 LoadFromFile,速度足够快并且工作得很好,但它没有 SaveToFile。网站上的论坛有一些关于拯救的非常古老的问题,但没有明确的答案。
有人可以告诉我如何在旋转图像后保存图像吗?
我在网上找到了很多用于图像保存的例程,但似乎都不起作用。它保存了一些东西,但它不再是 JPG。我尝试寻找一种保存画布的方法,但无法编译任何内容。一般来说,他们都因“无法将位图/画布、图片/等分配给 TRotateImage”而崩溃
有点超出我的深度。
ps 尝试过 ImageEx 和 Image32,但是 D5 的两个版本都太复杂,无法仅用于保存旋转文件。
我正在使用D5和Synaps与OpenSSL,它工作得很好.我正在尝试处理崩溃因此故意输入错误数据,一次尝试一次.到目前为止,我已经处理了诱导崩溃,但我刚刚更改了登录密码并尝试登录.
gMajorFail:=False;
if not pop3.Login() then
begin
gMajorFail:=True;
raise EPOP3.Create('POP3 ERROR: '+IntToStr(pop3.Sock.LastError)+
' When trying to Login to Account');
end;
if gMajorFail then GoTo HadFailure;
Run Code Online (Sandbox Code Playgroud)
它不会跳转到HadFailure-Label,而是跳转到过程中的最后一行代码.
我尝试过使用Try/Finally(这就是我使用Label to GoTo的原因)但它仍然跳到最后一行代码.
我哪里出错了,我该如何解决?
谢谢
我创建了一个登录表单,其中包含与 Access 文件中保存的用户名相对应的按钮。按钮是在OnCreate事件中创建的,因为我不想每次显示屏幕时都必须创建它们。
按钮按预期显示,并且我创建了 LogOn 和 LogOff 过程,它们都按我的预期工作。
下一步是仅显示当前登录到系统的用户的按钮。为此,我在OnActivate事件中创建了以下代码:
procedure TUserInForm.FormActivate(Sender: TObject);
var
btn : TLBButton;
begin
With UserQuery do begin;
first;
while (not eof) do begin
BtnName := FieldByName('UserName').AsString;
Btn := TLBButton(FindComponent(BtnName));
if (Btn <> nil) then
if (FieldByName('LoggedIn').AsBoolean = True) then Btn.Visible := True else Btn.Visible := False;
next;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
但是,它没有找到任何按钮——它们都是nil. 如果我删除nil检查,代码将引发访问冲突异常。但是,在代码中的任何一点我都不会破坏按钮或表单本身。按钮存在,因为我可以在表单上看到它们。该BtnName变量在单元内是全局的。我已经检查过该BtnName变量是否从表中正确填充。
我以前使用过类似的代码来查找组件,没有任何问题。事实上,我从另一个运行良好的过程(有明显的变化)“窃取”了上面显示的代码。日志显示没有错误。
任何人都可以提出一些解决此问题的方法吗?这很令人沮丧!
在Delphi 5中,当将两个类型的double和一个正值以及另一个负值相同的值相加时,我会遇到奇怪的问题.
例如
dbv = 50071763.721
crv = -50071763.721
当两个值相加时结果应为0但是我得到了一些像0.0000000074505805969这样的结果
我在excel中得到了总和我得到0结果.