我在Windows 10中使用Delphi 10.2.以下代码是Embarcadero提供的示例代码.
运行此代码后,通知将消失,并且不会停留在"操作中心"中.我怎么能让它落在那里?
procedure TNotify.btnShowClick(Sender: TObject);
var
MyNotification: TNotification;
begin
MyNotification := NotificationCenter1.CreateNotification;
try
MyNotification.Name := 'Windows10Notification';
MyNotification.Title := 'Windows 10 Notification #1';
MyNotification.AlertBody := 'RAD Studio 10 Seattle';
NotificationCenter1.PresentNotification(MyNotification);
finally
MyNotification.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
增加:打开Windows设置>系统>通知和操作的切换后,我可以看到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Notifications\Settings\Embarcadero.DesktopToasts.0579D43A\ShowInActionCenter是1.但每个用户都会使用此功能应用程序不能一直手动执行此操作,我也无法预测密钥的名称.
我使用的是Delphi 10.3.1 COMMUNITY版本,在调试项目时无法查看通用的tList。
我知道最新版本的Delphi不支持允许查看通用tList的旧式调试功能。因此,我在以下代码中使用了tList.List来评估tList。
在tList<tRecord>.List我可以看看它,但不能做它tList<Integer>.List。
type
tRecord = record
Field: Integer;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
_Record: tRecord;
_List1: TList<tRecord>;
_List2: TList<Integer>;
i: Integer;
begin
_List1 := TList<tRecord>.Create;
_List2 := TList<Integer>.Create;
for i := 0 to 4 do
begin
_Record.Field := i;
_List1.Add(_Record);
_List2.Add(i);
end;
Caption := IntToStr(_List1.List[0].Field) + IntToStr(_List2.List[0]);
_List1.Free;
_List2.Free;
end;
Run Code Online (Sandbox Code Playgroud)
tList<Integer>在调试过程中如何查看?
在下面的tFDMemTable中,我尝试对ID字段以字母A. A1,A2和结果应为4的记录的值求和。
type
TForm1 = class(TForm)
FDMemTable1: TFDMemTable;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
_FieldDef: TFieldDef;
begin
_FieldDef := FDMemTable1.FieldDefs.AddFieldDef;
_FieldDef.Name := 'ID';
_FieldDef.DataType := ftString;
_FieldDef.Size := 5;
_FieldDef := FDMemTable1.FieldDefs.AddFieldDef;
_FieldDef.Name :='value';
_FieldDef.DataType := ftInteger;
FDMemTable1.CreateDataSet;
FDMemTable1.Append;
FDMemTable1.FieldValues['ID'] := 'A1';
FDMemTable1.FieldValues['value'] := 1;
FDMemTable1.Append;
FDMemTable1.FieldValues['ID'] := 'B1';
FDMemTable1.FieldValues['value'] := 2;
FDMemTable1.Append;
FDMemTable1.FieldValues['ID'] := 'A2';
FDMemTable1.FieldValues['value'] := 3;
FDMemTable1.Append;
FDMemTable1.FieldValues['ID'] := 'B2';
FDMemTable1.FieldValues['value'] …Run Code Online (Sandbox Code Playgroud) Delphi tDataSet.Append似乎不调用Post。它在参考中说
更改数据集状态的数据集方法(例如“编辑”,“插入”或“追加”)或从一个记录移至另一条记录(例如“第一”,“最后”,“下一个”和“上一步”)的数据集方法会自动调用“发布”。
但是在以下代码中我看不到增加的RecordCount。
Memo1.Lines.Add(IntToStr(FDMemTable1.RecordCount)); // 0
FDMemTable1.Append;
Memo1.Lines.Add(IntToStr(FDMemTable1.RecordCount)); // still 0
Run Code Online (Sandbox Code Playgroud)
如果我在Append之后插入FDMemTable1.Post,结果将显示RecordCount为1。
delphi ×4
firedac ×2
tdataset ×2
debugging ×1
fdmemtable ×1
generic-list ×1
generics ×1
tlist ×1
toast ×1
windows ×1