我希望按钮大小(宽度和高度)尽可能小,但我希望它适合文本.任何代码示例?Delphi XE4 FireMonkey移动应用程序.
我有这段代码
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上关闭.我做错了什么?
我正在阅读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) 我一直在努力编写尽可能少的代码.所以,我使用:
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)
谢谢.
我在移动FireMonkey应用程序中找不到改变Edit控件背景颜色的方法.
我想从应用程序本身获取已使用的DLL列表.我的目标是将列表与硬编码列表进行比较,以查看是否注入了任何DLL.我在Google中找不到任何示例.
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中使用它.
在VCL中,我不得不ImageList
存储图像.在FireMonkey中没有ImageList
控制权.如何将图像存储在FireMonkey中供以后使用?
我想保存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 ×9
firemonkey ×4
delphi-xe2 ×3
delphi-xe4 ×2
delphi-xe5 ×2
android ×1
arrays ×1
button ×1
dll ×1
factory ×1
generics ×1
image ×1
ini ×1
settings ×1
text ×1
unicode ×1
variables ×1