小编Edi*_*ičs的帖子

如何调整按钮大小以适合Delphi FireMonkey中的文本?

我希望按钮大小(宽度和高度)尽可能小,但我希望它适合文本.任何代码示例?Delphi XE4 FireMonkey移动应用程序.

delphi text button firemonkey delphi-xe4

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

如何在Delphi-XE5 Firemonkey应用程序中关闭Android应用程序?

我有这段代码

procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  msg: String;
begin
  msg := 'Do you really want to exit?';

  if MessageDlg(msg, TMsgDlgType.mtConfirmation,
    [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrNo then
    CanClose := False
  else
    CanClose := True; { FIXME: don't want to work on Android }
end;
Run Code Online (Sandbox Code Playgroud)

它在Windows上运行完美.如果我选择"是",申请将关闭.但是,应用程序不会在Android上关闭.我做错了什么?

delphi android firemonkey delphi-xe5

8
推荐指数
2
解决办法
2万
查看次数

工厂模式,内存泄漏

我正在阅读Hodges的书"Delphi中的更多编码",关于工厂模式的部分.试着学习东西.把我的代码分解成小单元.我使用ReportMemoryLeaksOnShutDown := True;和停止代码会导致内存泄漏.为什么会发生,我该如何解决?

unit Unit2;

interface

uses
  Generics.Collections, System.SysUtils;

type
  TGatewayTpe = (gtSwedbank, gtDNB);

type
  TBaseGateway = class

  end;

type
  TSwedbankGateway = class(TBaseGateway)
  end;

type
  TGatewayFunction = reference to function: TBaseGateway;

type
  TGatewayTypeAndFunction = record
    GatewayType: TGatewayTpe;
    GatewayFunction: TGatewayFunction;
  end;

type
  TGatewayFactory = class
  strict private
    class var FGatewayTypeAndFunctionList: TList<TGatewayTypeAndFunction>;
  public
    class constructor Create;
    class destructor Destroy;
    class procedure AddGateway(const AGatewayType: TGatewayTpe;
      const AGatewayFunction: TGatewayFunction);
  end;

implementation

class procedure TGatewayFactory.AddGateway(const AGatewayType: TGatewayTpe;
  const AGatewayFunction: TGatewayFunction);

var
  _GatewayTypeAndFunction: TGatewayTypeAndFunction; …
Run Code Online (Sandbox Code Playgroud)

delphi factory factory-pattern delphi-xe2

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

可以在一行中初始化某些类型的多个变量吗?

我一直在努力编写尽可能少的代码.所以,我使用:

MyBoolean := Memo1.Text <> '';
Run Code Online (Sandbox Code Playgroud)

代替

if Memo1.Text = '' then
  MyBoolean := true
else
  MyBoolean := false;
Run Code Online (Sandbox Code Playgroud)

声明并初始化

var
  myGlobal: integer = 99;
Run Code Online (Sandbox Code Playgroud)

声明和初始化全局变量.我想对局部变量做同样的事情,但似乎不可能,所以,我想知道是否有办法在一行中初始化某些类型的多个变量,比如在C中

int x, y, z;
x=y=z=0;
Run Code Online (Sandbox Code Playgroud)

谢谢.

delphi variables initialization

6
推荐指数
2
解决办法
4132
查看次数

如何在FireMonkey中更改编辑控件背景颜色?

我在移动FireMonkey应用程序中找不到改变Edit控件背景颜色的方法.

delphi firemonkey delphi-xe4

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

如何获取已使用的DLL列表?

我想从应用程序本身获取已使用的DLL列表.我的目标是将列表与硬编码列表进行比较,以查看是否注入了任何DLL.我在Google中找不到任何示例.

delphi dll dll-injection delphi-xe2

3
推荐指数
1
解决办法
1907
查看次数

编译错误创建TPair TArray

uses
  Generics.Collections, types, rtti, System.Generics.Collections;

procedure GimmePairArray(const APairArray: TArray<TPair<string, TValue>>);
begin

end;

procedure TForm2.FormCreate(Sender: TObject);
var
  _PairArray: TArray<TPair<string, TValue>>;
begin
  _PairArray := TArray <TPair<string, TValue>>.Create(TPair<'"reset changes"', TValue.From<Boolean>(True)>);
  GimmePairArray(_PairArray);
end;
Run Code Online (Sandbox Code Playgroud)

导致编译错误: [DCC错误] Unit2.pas(38):E2003未声明的标识符:'TPair' 我做错了什么?TPair在System.Generics.Collections中声明,我在我的Uses中使用它.

arrays delphi generics delphi-xe2

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

如何在FireMonkey中存储图像?

在VCL中,我不得不ImageList存储图像.在FireMonkey中没有ImageList控制权.如何将图像存储在FireMonkey中供以后使用?

delphi image firemonkey

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

为什么没有保存ini文件?

我想保存unicode字符串.有我所拥有的:

Uses IniFiles;
const
SZ_APP_NAME;

Procedure TForm1.SaveSettings;
var
  _MemIniU: TMemIniFile;
  SettingsPath: string;
begin
  SettingsPath := GetHomePath + PathDelim + SZ_APP_NAME + PathDelim;
  _MemIniU := TMemIniFile.Create(ChangeFileExt(SettingsPath, 'Settings.ini'),
    TEncoding.UTF8);
  try
    if Form1.WindowState <> TWindowState.wsMaximized then
    begin
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowLeft', Form1.Left);
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowTop', Form1.Top);
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowWidth', Form1.Width);
      _MemIniU.WriteInteger(SZ_APP_NAME, 'WindowHeight', Form1.Height);
      _MemIniU.WriteString(SZ_APP_NAME, 'UnicodeText', Edit1.Text);
    end;
  finally
    _MemIniU.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但是没有创建ini文件.我做错了什么?RAD Studio XE5.

delphi unicode settings ini delphi-xe5

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