小编SHI*_*Guk的帖子

如何让吐司通知留在使用Delphi的Windows 10操作中心

我在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.但每个用户都会使用此功能应用程序不能一直手动执行此操作,我也无法预测密钥的名称.

windows delphi notifications toast

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

如何在Delphi调试期间查看通用tList

我使用的是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>在调试过程中如何查看?

delphi generics debugging generic-list tlist

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

如何内部处理过滤后的tDataSet记录以不显示在tDBGrid结果上

在下面的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 firedac fdmemtable

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

为什么不tDataSet.Append自动调用Post

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 tdataset firedac

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