小编Mic*_*nny的帖子

如何/仅使用表单和数据模块重构Delphi程序

经过多年将Delphi程序编码为表单和数据模块中不可测试的代码(包括全局变量),唯一的类是表单本身,包含表单UI本身所需的所有代码.

我如何将代码转换为一组执行实际工作的类?我是否需要停止使用数据源/数据集并在类中执行所有操作?我需要ORM吗?

通常没有必要在表单中重用代码,所以将逻辑转换为类是否有意义?

delphi oop refactoring unit-testing datamodel

20
推荐指数
3
解决办法
2013
查看次数

在Delphi中,如何确定何时使用Real,Real48,Double或Single数据类型?

我的大部分申请都围绕着涉及支付和利率计算的财务计算.我正在寻找如何确定最适合使用的Delphi数据类型.

如果我使用数据库来存储这些值,并且我已将该数据库中的字段定义为带有两个小数位的十进制值,哪种Delphi数据类型与该方案最兼容?

在将值存储在数据库中之前,我是否应该使用Delphi中的舍入公式将结果格式化为两位小数?如果是这样,这样做的最佳做法是什么?

delphi compatibility types

12
推荐指数
2
解决办法
3866
查看次数

在Delphi中使用静态文本而不是Label有什么好处?

来自docwiki标签:

当您需要识别或注释另一个组件(如编辑框)或要在表单上包含文本时,可以在表单上放置标签.标准标签组件TLabel是一个非窗口控件,因此无法获得焦点; 当您需要带有窗口句柄的标签时,请改用TStaticText.

声明" 当你需要带有窗口句柄的标签时,使用TStaticText代替 "是什么意思?

delphi label static-text

12
推荐指数
2
解决办法
4637
查看次数

新Delphi Rad Studio XE2中包含FireMonkey(FMX)功能的详细信息?

我听说Delphi的新Rad Studio XE2有一个名为FireMonkey的东西,允许相同的代码构建Windows 32,Windows 64和MacOS应用程序.

如果这是真的,这是巨大的.我在哪里可以获得有关FireMonkey的技术文档?

编辑:

我对MacOS很感兴趣.当我发布我的软件的Mac版本时,有几个人问我,我一直告诉他们我不是.我在三月(4个月前)回答了这个问题,没有人对FireMonkey说过任何话.哪个版本的Delphi会让我创建在Mac上运行的软件?

主持人问题:

这应该是维基吗?

delphi delphi-xe2 firemonkey

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

Text DFM上下文菜单选项的含义是什么?

当您右键单击Delphi表单时,您将获得弹出上下文菜单.底部选项是Text DFM.可以选中或不选中此选项.选中或取消选中此选项时的含义是什么?

在此输入图像描述

delphi contextmenu dfm

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

如何在Delphi 2010中运行应用程序时停止IDE窗口最大化

我注意到,如果我将Delphi 2010 IDE窗口设置为最大化之外的其他窗口,那么当我在IDE中运行应用程序时,它会自动最大化.关闭程序后,IDE窗口将调整大小,使其恢复到运行程序之前的大小.

无论如何要关闭这种烦人的行为?

ide delphi delphi-2010

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

如何让Delphi货币类型一直像Excel一样回合?

我试图让Delphi像Excel一样圆,但我不能.这是代码:

procedure TForm1.Button1Click(Sender: TObject);
var
 s : string;
 c : currency;
begin
 c := 54321.245;
 s := '';
 s := s + Format('Variable: %m',[c]);
 s := s + chr(13);
 s := s + Format('   Literal: %m',[54321.245]);
 ShowMessage(s);
end;
Run Code Online (Sandbox Code Playgroud)

德尔福舍入

我正在使用设置为54321.245的货币变量,当我格式化此变量时,它使用Bankers Rounding进行舍入.但是,当我将相同的值格式化为文字时,它会舍入Excel舍入的方式.

无论是形成货币变量还是字面值,我都期待这个回合到54,321.25美元.我怎样才能确保Delphi每次都以与Excel相同的方式进行舍入?

编辑

The rounding I expect to see is as follows:  
54,321.245   = 54,321.25  
54,321.2449  = 54,321.24  
54,431.2499  = 54,421.25 
Run Code Online (Sandbox Code Playgroud)

我只使用文字来展示Delphi的不同方式.我希望在实际代码中使用变量.

注意:
如果我将变量从货币更改为扩展,则它会正确舍入

编辑#2

有人建议我不清楚我的要求,这绝对不是真的.我对我的要求有一个非常清楚的理解,我显然没有很好地解释它们.我想要的舍入方法是两位小数.当deimal部分的千分之一值> = 0.005时,我希望它四舍五入为0.01,Delphi提供的货币类型不会这样做.我也试过这个例子,使用带有money数据类型的Microsoft SQL(我假设它与Delphi的货币相同),并且SQL按照我描述的方式对它进行了轮询.

  • SQL Money> = 0.005 = 0.01 …

delphi format excel currency rounding

9
推荐指数
2
解决办法
6707
查看次数

为什么最大化的Delphi形式比GetSystemMetrics值宽8个像素?

如果我最大化Delphi形式,宽度和高度值比相应的GetSystemMetrics SM_CXSCREEN和SM_CYSCREEN大8个像素?

例如:

当我右键单击我的屏幕并获得属性时,我的屏幕分辨率为1680 X 1050.这些是从GetSystemMetrics的(SM_CXSCREEN)和GetSystemMetrics的(SM_CYSCREEN)返回的相同的值.

当我在Delphi应用程序中最大化表单时,我得到1688的宽度和1058的高度.有8像素的差异.是什么导致这种差异?

windows delphi winapi

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

如何格式化DBGrid列以显示两个小数位?

我想格式化特定单元格强制两个小数位.数据来自ElevateDB存储过程并连接到TDataSource.

编辑:SQL编程注:

我不确定这是否只是一个ElevateDB问题.在了解Fields Editor之前,我尝试使用存储过程中的CAST(NumericField as varchar(10))语句在SQL级别格式化数据.通过这样做,它没有在字段编辑器中为此特定字段公开DisplayFormat属性.

当我从存储过程中删除CAST()语句时,DisplayFormat属性显示在字段编辑器中.

delphi formatting dbgrid lazarus elevatedb

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

在使用条款中使用完全合格的命名空间是否有好处?

在uses子句中完全限定名称空间是否更好?例如,这些声明中的一个比另一个好吗?

uses
  ShellApi,
  Windows,
  SHFolder,
  SysUtils;

uses
  Winapi.ShellApi,
  Winapi.Windows,
  Winapi.SHFolder,
  System.SysUtils;

Run Code Online (Sandbox Code Playgroud)

delphi namespaces

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