标签: firemonkey

如何添加在OSX上按预期工作的菜单项分隔符?

Windows平台上,使用VCL,当我们要在菜单中添加分隔符时,我们添加一个TMenuItem带有Caption := '-';

使用FireMonkey,我们添加了TMenuItem一个Text := '-';

它在Windows平台上按预期工作,带有Text =' - '的项目显示为分隔符.

但是,当我在OSX上运行相同的应用程序时,我看到减号...

我没有找到任何属性TMenuItem来指定它是一个分隔符 ...

我尝试了a TMainMenu和a TMenuBar(UseOSMenu := True|False;),我仍然有这个问题.

有没有想过创建一个真正的分隔符?(否则,我会检查操作系统并在OSX中删除它...)

delphi menuitem separator delphi-xe2 firemonkey

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

如何绘制数千个不同透明度的精灵?

嗨我正在使用Firemonkey,因为它具有跨平台功能.我想渲染一个粒子系统.现在我正在使用TMesh,它可以很好地快速显示粒子.每个粒子通过两个纹理三角形在网格中表示.使用不同的纹理坐标,我可以使用相同的网格显示许多不同的粒子类型.问题是,每个粒子都有自己的透明度/不透明度.根据我目前的方法,我无法为每个三角形(甚至顶点)单独设置透明度.我能做什么?

我意识到TMesh.Data.VertexBuffer中还有一些其他属性,比如Diffuse或其他纹理集(TexCoord1-3),但这些属性在TMesh中不被使用(甚至没有初始化).通过继承TMesh简单地改变这种行为似乎并不容易.似乎必须从较低级别的控件继承以初始化具有更多属性的VertextBuffer.在我尝试之前,我想问一下是否可以控制三角形的透明度.例如,我可以设置透明色(漫反射)还是使用透明纹理(TextCoor1)?或者有更好的方法在Firemonkey中绘制粒子.

delphi delphi-xe2 firemonkey

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

FireMonkey性能问题

我正在使用Delphi XE2和更新4修补程序1

我的默认FMX应用程序表示非常缓慢,并且在事件发生时它会冻结一段时间.例如:当我点击一个按钮时,整个应用程序会冻结几秒钟(但仅限于该事件的第一次执行).所以我认为它可能是一个GPU问题并编辑我的默认Dpr文件为;

uses
  FMX.Forms,  fmx.Types,..

{$R *.res}

begin
  Application.Initialize;

  GlobalUseHWEffects := False   ;
  GlobalUseDirect2D := False  ;
  GlobalUseDirect2DSoftware := False    ;
  GlobalUseGDIPlusClearType := True    ;
  GlobalDisableFocusEffect := True   ;

  Application.CreateForm(...);
  Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)

现在它按预期工作没有任何问题,但CPU使用率与之前一样(移动鼠标时为25%)

然后我修改了我的代码

  GlobalUseHWEffects := true  ;
  GlobalUseDirect2D := False  ;
  GlobalUseDirect2DSoftware := False    ;
  GlobalUseGDIPlusClearType := True    ;
  GlobalDisableFocusEffect := True   ;
Run Code Online (Sandbox Code Playgroud)

现在一切顺利,只有一小段时间的节省时间和CPU使用率非常低(0 - 2%).(这就是我需要Firemonkey的原因)

现在所有控件都按预期工作,除了菜单栏,上面的设置不适用于菜单栏,它正在使用默认行为(整个应用程序冻结几秒钟).

我能做些什么才能解决这个问题.

delphi firemonkey

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

Firemonkey/Delphi中的流体/动态布局

假设我想要一个并排放置的窗体上的两个形状,每个窗口占据窗口的50%,当窗口调整大小时会调整大小.我怎样才能做到这一点?

我真正想要的是按比例设置...例如..上述形状之一占25%,另一种占75%

动态调整大小非常重要,我不想输入任何代码来实现这一点.

delphi delphi-xe2 firemonkey

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

如何使用Delphi和PHP获得相同的MD5?

我正在使用带有FireMonkey的Delphi XE2.

我已经阅读了很多关于MD5的其他问题,但没有找到我的问题的答案...我还测试了不同的脚本来从Delphi生成MD5:

function MD5(const text: string) : string;
var
  md5 : TIdHashMessageDigest5;
begin
  md5    := TIdHashMessageDigest5.Create;
  Result := LowerCase(md5.HashStringAsHex(text, TEncoding.ANSI));
  md5.Free;
end;
Run Code Online (Sandbox Code Playgroud)

要么

function MD5(const text: String) : string;
var
  md5: IMD5;
begin
  md5:= GetMD5;
  md5.Init;
  md5.Update(TByteDynArray(RawByteString(AnsiString(text))), Length(AnsiString(text)));
  Result := LowerCase(md5.AsString);
end;
Run Code Online (Sandbox Code Playgroud)

两者都给我相同的结果......这通常与我在PHP中的结果相同:

$md5 = md5($toencode);
$md5 = hash("md5", $toencode);
Run Code Online (Sandbox Code Playgroud)

但是如果我使用Delphi或PHP,结果是不同的,当我请求其中一个字符的MD5时:"或者' 可能有其他字符产生不同的结果但我只是在测试期间找到这些字符...

我已经测试了许多扩展的ASCII字符并且具有相同的MD5 ...

所以,我不明白为什么我与它们中的一些("')存在差异,而且我想知道是否有一种方法可以始终从Delphi生成PHP MD5结果,无论字符是什么.

任何的想法?

例如:

Delphi:

":b15835f133ff2e27c7cb28117bfae8f4

':3590cb8af0bbb9e78c343b52b93773c9

PHP:

":3bd864034f446da13581129bb17f9191 …

php delphi md5 delphi-xe2 firemonkey

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

FireMonkey/Rad Studio XE2:如何在OS X上显示SaveDialog过滤器?

我创建了一个(Delphi XE2)Firemonkey示例程序,它包含一个TButton和一个带有两个不同过滤器的TSavedialog.(TSaveDialog组件支持Win32/Win64和OS X平台.)

它在Win32/Win64上工作正常,但我现在不知道为什么它不显示OS X上的Savedialog过滤器(VirtualBox/OS X 10.7.x).

如何让它在OS X上运行?

procedure TForm1.Button_SaveClick(Sender: TObject);
begin
  SaveDialog.Filter:='Format_1 (*.fmt1)|*.fmt1|Format_2 (*.fmt2)|*.fmt2';

  If Savedialog.Execute Then ShowMessage(SaveDialog.FileName+#13+'Selected filterindex: '+Inttostr(SaveDialog.FilterIndex));
end;
Run Code Online (Sandbox Code Playgroud)

delphi macos delphi-xe2 firemonkey

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

为什么精简字体在FireMonkey中无法正确显示?

(我该怎么办呢?)

如果我在VCL中创建两个标签并设置一个使用Arial和另一个Arial Narrow,我会看到预期的结果.

在此输入图像描述

如果我在Firemonkey中执行相同操作,则第二个标签不会显示在Arial Narrow中.它甚至没有显示在Arial中(我的圆点是圆的,'s'的形状都是错的等等).

在此输入图像描述

有谁知道为什么FM(我用Delphi XE4测试这个)没有正确显示字体?我能做些什么吗?

VCL表格的来源:

object Form3: TForm3
  Left = 0
  Top = 0
  Caption = 'Form3'
  ClientHeight = 198
  ClientWidth = 475
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 24
    Top = 32
    Width = 134
    Height = 14
    Caption = 'This label is using Arial @11'
    Font.Charset = DEFAULT_CHARSET
    Font.Color …
Run Code Online (Sandbox Code Playgroud)

delphi fonts firemonkey

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

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

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

delphi text button firemonkey delphi-xe4

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

从TButton继承的自定义按钮不显示

我正在将一个大型项目转换为Firemonkey,并且我们有一些自定义按钮,这些按钮不会显示在表单上.我已将问题分离到一个非常简单的项目:

使用下面的代码,在移动和桌面上(使用Delphi XE6中的默认新应用程序),创建tTestButton1工作正常,但tTestButton2不会在窗体上显示.怎么可能?

type
tTestButton1 = class(TButton);
tTestButton2 = class(tTestButton1);

tMainForm = class(TForm)
private
  fTestButton: TButton;
public
  constructor Create(aOwner: TComponent); override;
end;

constructor tMainForm .Create(aOwner: TComponent);
begin
  inherited;

//  fTestButton := tTestButton1.Create(Self); // this works fine (used instead of next line)
  fTestButton := tTestButton2.Create(Self);  //this button does not show up
  fTestButton.Text := 'Test';
  fTestButton.Parent := Self;
  fTestButton.Visible := True;
  fTestButton.Position.X := 20;
  fTestButton.Position.Y := 20;
end;
Run Code Online (Sandbox Code Playgroud)

delphi firemonkey delphi-xe6

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

如何使用datasnap获取作为标头传递的标记?

在我的客户端应用程序中,我使用以下代码在标头中添加一个标记:

RESTRequest.Params.AddItem('Authorization', 'Bearer ' + MyToken, TRESTRequestParameterKind.pkHTTPHEADER, [TRESTRequestParameterOption.poDoNotEncode]);
Run Code Online (Sandbox Code Playgroud)

我想使用datasnap在我的服务器中获取此令牌.

我试过用这里这里的答案,但没有成功.

可能吗?

我怎样才能做到这一点?

编辑

我可以验证Datasnap执行TIdCustomHTTPServer.DoParseAuthenticationDoParseAuthentication调用FOnParseAuthentication它是否已分配.

那么,我怎么能破解Datasnap分配我自己的OnParseAuthentication

我认为这解决了我的问题.

delphi indy datasnap http-headers firemonkey

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