标签: delphi-xe7

防止Android应用.关闭

随着XE7中非阻塞MessageDlg的出现,似乎现在无法有条件地阻止该应用程序.从我们在Windows中关闭(或在XE5中):

procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    CanClose := False;
    FCanClose := False;
    FMX.Dialogs.MessageDlg('Exit?'
        ,
        TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0,
          procedure(const AResult: TModalResult)
          begin
            if AResult = mrYes then
              FCanClose := True;
          end
    );
    CanClose := FCanClose;

end;
Run Code Online (Sandbox Code Playgroud)

仅在表单已关闭后才调用MessageDlg(和匿名过程),从而使对象失效.哦,如果你想知道我为什么使用FCanclose,那是因为我在匿名程序中遇到了"无法捕获Canclose"的编译器错误.

现在我尝试的另一种可能性是将MessageDlg放在FormKeyUp事件处理程序中并捕获vkHardwareBack.

procedure TfrmMain.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
var
  FService: IFMXVirtualKeyboardService;
begin
  if Key = vkHardwareBack then
  begin
    TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyBoardService,
        IInterface(FService));
      if (FService <> nil) then
      begin
        if (TVirtualKeyBoardState.Visible in FService.VirtualKeyBoardState) then

        else
        begin
          FMX.Dialogs.MessageDlg('Exit?'
          , …
Run Code Online (Sandbox Code Playgroud)

delphi android firemonkey delphi-xe7

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

如何摆脱这个编译器警告?

TObject在Delphi XE7(Firemonkey)中有几个类(具有属性)AsJson:

uses
  System.Classes, System.SysUtils, XSuperObject;

type
  TMyObject = class(TObject)
  public
    property AsJson: ISuperObject read GetAsJson;
  end;
Run Code Online (Sandbox Code Playgroud)

但是,编译器会给我这些警告:

[dcc32 Warning] MyUnit.pas(383): W1009 Redeclaration of 'AsJson' hides a member in the base class
Run Code Online (Sandbox Code Playgroud)

我正在寻找基类TObject并且看不到这样的东西,如果我试图使用它也不是一个有效的字段.我在文档中没有看到关于这样一个属性的内容.只有当属性类型是ISuperObject最新版本XSuperObject(至少几周前来自SVN)时才会出现这种情况.我也试过使用类型Integer,我也得到它.

这个警告在我的场景中意味着什么,我该如何摆脱它?

编辑

它似乎只发生在我XSuperObject使用条款中......

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  XSuperObject in 'C:\...\XSuperObject.pas',
  XSuperJSON in 'C:\...\XSuperJSON.pas';

type
  TMyObject = class(TObject)
  private
    FTest: Integer;
  public
    property AsJson: Integer read FTest;
  end;

begin

end. …
Run Code Online (Sandbox Code Playgroud)

delphi compiler-warnings delphi-xe7 xsuperobject

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

循环通过UTF8String

如何迭代单个字符UTF8String?我需要打印出单个字符而不是字节..

program Project3;

uses
  System.SysUtils;

var
  Str: UTF8String;
  I: Integer;
begin
  Str := '?????';
  for I := 0 to Length(Str) do
  WriteLn(Str[I]);
  ReadLn;
end.
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe7

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

在delphi xe7中tidtcpclient可以发送多少大小的数据

我正在使用Delphi XE7开发移动应用程序.我正在使用TIdtcpClient组件与Server应用程序进行交互.我需要知道Android移动和iO移动应用程序,我可以一次发送到服务器的最大数据大小是多少.或者它取决于互联网的速度.请帮帮我

delphi android indy firemonkey delphi-xe7

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

delphi xe7运行时包与delphi 7的兼容性

我用delphi 7创建了一个庞大的delphi项目.

这个程序由几个运行时包(bpl)组成,我们要做的是将我们的组件和源代码升级到delphi xe7组件,以便这个程序可以由delphi XE7编译.

但由于它不是一个简单的程序,我们首先想到升级一些运行时包并继续使用nexts包,这样我们就可以逐步升级我们的软件.

我想知道这个想法是否有效:例如,

main.exe(delphi7)+ bpl1(delphi7)+ bpl2(delphi7)+ ... + bpl9(delphi xe7)+ bpl10(delphi xe7)

有没有人试过这些方法?

delphi delphi-xe7

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

Delphi - ComboBox/LookupComboBox

我有一个ComboBox/LookupComboBox的问题,这是一个非常白痴但我不知道如何通过谷歌搜索它来解决它.我在我的数据库上有一个表,用于保存记录的"Y/N"以指示它是活动(Y)还是非活动(N).但在我的应用程序中,我想向用户显示"是/否"而不只是一个单词,任何人都可以帮助我吗?

谢谢!

delphi lookup combobox delphi-xe7

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

ctrl + shift + B有什么作用?

当我按ctrl+ shift+ B.在Delphi XE7(安装了CN_Pack)中,我看到以下内容:

在此输入图像描述

当我再次按ctrl+ shift+ B>^消失.这是什么意思?

根据Delphi文档:

ctrl+ shift+ B 显示缓冲区列表.

这是其他的东西,它是什么?

ide delphi keyboard-shortcuts delphi-xe7

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

使用字符串变量的Delphi SQL Update单个记录

我有以下编码.每当有人想购买CD时,必须扣除数量.当我使用cd名称编码工作时,但是当我使用字符串时,没有任何反应.请帮忙.

var scd : string;
begin
   scd := inputbox('CD Name','Enter CD Name','');
   CDQuery.Active := False;
   cdquery.SQL.Clear;
   CDQuery.SQL.Text := 'Update CD_Table Set Quantity = Quantity - 1 where Cdname = ''scd''';
   CDQuery.ExecSQL;
   messageDlg('Quantity was updated',mtInformation,[mbOK],0);
   CDQuery.SQL.text := 'Select * from CD_Table';
   CDQuery.Active := True;  
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe7

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

TShellTreeView在哪里?

我正在尝试在Delphi 10 Seattle中编译旧项目并收到以下错误消息

找不到类TShellTreeView点击取消忽略.....

TShellTreeView是一个设计时组件,是ShellCtrls软件包的一部分,它始终随Delphi一起提供,通常包含在以下Samples软件包中:

C:\ Users\Public\Documents\Embarcadero\Studio\xx.x\Samples\Object Pascal\VCL\

现在它似乎不再存在了.这个包裹在哪里?

delphi delphi-xe7 delphi-10-seattle

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

如何在Delphi中手动设置Pointer的地址

我想手动将Pointer的地址设置为存储在字符串变量中的值.我有:

addr : String;
ptr  : Pointer;
Run Code Online (Sandbox Code Playgroud)

然后:

addr:='005F5770';
Run Code Online (Sandbox Code Playgroud)

如何将其分配给ptr

windows delphi pointers delphi-xe7

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