小编Gia*_*mbo的帖子

如何在Fmx项目中将Windows关闭事件作为WM_QUERYENDSESSION和WM_ENDSESSION在VCL项目中获取?

我需要拦截Windows关闭,并执行一些数据库查询,然后我的应用程序将关闭.我在FMX项目上使用Windows 10下的Delphi XE10

我尝试的是下面的代码,但它不起作用

  private
    { Private declarations }
  {$IFDEF MSWINDOWS}
    procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;
    procedure WMEndSession(var Msg : TWMQueryEndSession); message  WM_ENDSESSION ;
  {$ENDIF}

  end;



procedure TfMain.WMQueryEndSession(var Msg: TWMQueryEndSession);
var
 lista:TStringList;
begin

{$IFDEF MSWINDOWS}
  try
    lista:=TStringList.Create;
    lista.Add(FOrmatDateTime('DD/MM/YYYY HH:NN:SS',now)+' event WMQueryEndSession');
    Lista.SaveToFile(froot+formatdatetime('YYMMDDHHNNSSZZZ',now)+'.log');
    SincroClose();
    lista.Add(FOrmatDateTime('DD/MM/YYYY HH:NN:SS',now)+' Done');
    Lista.SaveToFile(froot+formatdatetime('YYMMDDHHNNSSZZZ',now)+'.log');
  finally
    lista.Free;
  end;
{$ENDIF}
  inherited;

end;



procedure TfMain.WMEndSession(var Msg: TWMQueryEndSession);
var
 lista:TStringList;
begin

{$IFDEF MSWINDOWS}
  try
    lista:=TStringList.Create;
    lista.Add(FOrmatDateTime('DD/MM/YYYY HH:NN:SS',now)+' WMEndSession');
    Lista.SaveToFile(froot+formatdatetime('YYMMDDHHNNSSZZZ',now)+'.log');
    SincroClose();
    lista.Add(FOrmatDateTime('DD/MM/YYYY HH:NN:SS',now)+' Done');
    Lista.SaveToFile(froot+formatdatetime('YYMMDDHHNNSSZZZ',now)+'.log');
  finally
    lista.Free;
  end;
{$ENDIF} …
Run Code Online (Sandbox Code Playgroud)

delphi firemonkey

14
推荐指数
1
解决办法
796
查看次数

Android 的 TMemo (Firemonkey) 问题和奇怪的行为

在我的应用程序中使用 Tmemo,允许用户输入笔记,我发现在编辑文本或使用退格键时,会发生非常奇怪的事情。

例如,无法将光标移动到文本的末尾,或者删除单词的某些字母,在这种情况下,文本将完全被其他意想不到的单词替换。我发布了一段视频,展示了这种奇怪的行为。

不知道有没有相关性,但是当文本来自键盘提供的语音听写,或者文本是由软键盘的预测建议选择的单词组成时,问题似乎更明显.

这个问题在旧版本的 Delphi (Xe 10.1) 中已经存在,但是通过修改一些 pas 文件并将 calssex 文件替换为在网上找到的新 classex.dex 来解决。

现在我正在使用 Delphi 10.4 Sydney patch3

经过测试

  • 平板电脑联想 tb-x606x 安卓 9
  • 小米笔记 7 安卓 10
  • 华为 p20 pro 安卓 10
  • 三星 S7 安卓 8
  • 三星 A40 安卓 10

无论如何,我也附上了一个测试的来源,在那里可以看到Tmemo的奇怪行为。

我还在 Embarcadero 质量支持 ( RSP-31362 )上开了一张票

视频(链接在这里

源代码(链接在这里

我在 Embarcadero 质量支持RSP-31134 的另一张票中发现了同样的问题

delphi android firemonkey delphi-10.4-sydney

13
推荐指数
1
解决办法
351
查看次数

Delphi Firemonkey同时从库中选择多张图片

我需要在我的Android应用程序中创建一个功能,允许用户打开手机图库,一次选择多张图片,然后将选定的图片保存在我的本地数据库中.我需要的是使用Android Intent获取所选图片(文件名和路径)的方法.希望你能理解我的问题.

我正在使用此代码:

if TPlatformServices.Current.SupportsPlatformService(IFMXTakenImageService,
  IInterface(ImageService)) then
begin
  Params.RequiredResolution := TSize.Create(640, 640);
  Params.OnDidFinishTaking := DoDidFinish;
  ImageService.TakeImageFromLibrary(SpeedButton2, Params);
end;

procedure TfGallery.DoDidFinish(Image: TBitmap);
begin
 Image1.Bitmap.Assign(Image);
end;
Run Code Online (Sandbox Code Playgroud)

不幸的是,此代码可以从图库中返回一次图像.

编辑 - 根据Nick Cardoso的答案,以下代码适用于问题的第一部分:

Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_PICK);
intent.setType(StringToJString('image/*'));
intent.setAction(TjIntent.JavaClass.ACTION_GET_CONTENT);
Intent.putExtra(TJIntent.JavaClass.EXTRA_ALLOW_MULTIPLE,true);
LaunchActivity(Intent);
Run Code Online (Sandbox Code Playgroud)

上面的代码用于选择多张图片.现在我很难找到一个解决方案来回复(在回调函数中)Delphi中的选定文件!

delphi android firemonkey

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

标签 统计

delphi ×3

firemonkey ×3

android ×2

delphi-10.4-sydney ×1