我一直在阅读关于delphi中with关键字的坏事,但在我看来,如果你不过度使用它.它可以使您的代码看起来很简单.
我经常将所有TClientDataSets和TField都放在TDataModules中.所以在我的表单中我有这样的代码
procedure TMyForm.AddButtonClick(Sender: TObject);
begin
with LongNameDataModule do
begin
LongNameTable1.Insert;
LongNameTable1_Field1.Value := "some value";
LongNameTable1_Field2.Value := LongNameTable2_LongNameField1.Value;
LongNameTable1_Field3.Value := LongNameTable3_LongNameField1.Value;
LongNameTable1_Field4.Value := LongNameTable4_LongNameField1.Value;
LongNameTable1.Post;
end
end;
Run Code Online (Sandbox Code Playgroud)
如果没有with关键字,我必须编写这样的代码
procedure TMyForm.AddButtonClick(Sender: TObject);
begin
LongNameDataModule.LongNameTable1.Insert;
LongNameDataModule.LongNameTable1_LongNameField1.Value := "some value";
LongNameDataModule.LongNameTable1_LongNameField2.Value :=
LongNameDataModule.LongNameTable2_LongNameField1.Value;
LongNameDataModule.LongNameTable1_LongNameField3.Value :=
LongNameDataModule.LongNameTable3_LongNameField1.Value;
LongNameDataModule.LongNameTable1_LongNameField4.Value :=
LongNameDataModule.LongNameTable4_LongNameField1.Value;
LongNameDataModule.LongNameTable1.Post;
end;
Run Code Online (Sandbox Code Playgroud)
我认为使用with关键字更容易阅读.
我应该避免使用with关键字吗?
前段时间我写了一段代码来更新数据库表中的多行.代码是这样的
var db = new MyDataContext();
db.Execute("UPDATE Details SET IsActive = 0 WHERE MasterId = 1");
Run Code Online (Sandbox Code Playgroud)
然后有一天,当我得到文件的最新版本时,我看到有人将代码改为这样的东西
var details = from d in db.details where d.MasterId == 1 select d;
foreach (var detail in details)
detail.IsActive = false;
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:更新多行的更好方法是什么?使用Linq还是SQL?
我在ClientDataSet中有一个整数字段,我需要比较一些值,如下所示:
我可以使用const
const
mvValue1 = 1;
mvValue2 = 2;
if ClientDataSet_Field.AsInteger = mvValue1 then
Run Code Online (Sandbox Code Playgroud)
或者枚举
TMyValues = (mvValue1 = 1, mvValue2 = 2);
if ClientDataSet_Field.AsInteger = Integer(mvValue1) then
Run Code Online (Sandbox Code Playgroud)
或类const
TMyValue = class
const
Value1 = 1;
Value2 = 2;
end;
if ClientDataSet_Field.AsInteger = TMyValues.Value1 then
Run Code Online (Sandbox Code Playgroud)
我喜欢类const方法,但似乎不是delphi的方式,所以我想知道你的想法
如何在delphi中创建补充工具栏表单.
我尝试ScreenSnap和Align属性,但我需要表单即使用户最大化其他形式,仍然可见,而不是在顶部.就像windows侧边栏一样.
从评论中更新:如果窗口最大化,它也会使窗口最大化,而不是在前面或后面.
谢谢