标签: firemonkey

Delphi XE2 FireMonkey是否支持Indy用于跨平台应用程序?

用Firemonkey查看新的Delphi XE2.考虑到它为Windows,Mac OSX和iOS编译,VCL组件在FireMonkey应用程序中是无用的.

我的问题是:是否会有Indy Firemonkey版?因为我非常需要IdHTTP.Post();.如果没有,有没有办法在FireMonkey中执行此操作?

我现在谷歌搜索了很长一段时间,没有找到任何东西.:S

delphi http indy delphi-xe2 firemonkey

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

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

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

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

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

delphi delphi-xe2 firemonkey

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

如何调整按钮大小以适合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
查看次数

正确的方法为自定义组件创建样式

我在另一篇文章的末尾有点问这个问题,但觉得这个话题需要一个自己的问题......

如果我用自己的.style创建了我自己的组件,那么将它与Delphi提供的已定义样式合并而不修改默认值的正确程序是什么?

我可以将默认样式嵌入到我创建的组件中吗?嵌入式样式是否可以继承其父控件的大部分样式?

我觉得我错过了一个我正在努力描述的链接.我的应用程序有一个TStyleBook,默认情况下加载(例如)"dark.style".我的组件有自己的"MyComponent.style"文件.TStyleBook可以加载"dark.style"或"MyComponent.style",但不能同时加载两者.并且应用程序需要加载"MyComponent.style"似乎不正确,因为组件应该以某种方式引用它.如果组件每次在应用程序中使用时也需要单独的样式文件,则它不会使组件非常便携.

我可以编辑自己的"MyDark.style"并将MyComponent添加到其中但这似乎也不正确,因为它会产生一个问题,以使其与Embarcadero所做的更改保持同步.

我希望我已经清楚地解释了这一点.马丁

delphi delphi-xe2 firemonkey

7
推荐指数
1
解决办法
3010
查看次数

FireMonkey并显示所有者表单的模式对话框中心

我在所有者表单的中心显示模式对话框时遇到问题.我显示模态对话框的代码是:

procedure TfrmMain.btnOpenSettingsClick(Sender: TObject);
var
  sdSettingsDialog: TdlgSettings;

begin
   sdSettingsDialog := TdlgSettings.Create(Self);
   sdSettingsDialog.Position := TFormPosition.poOwnerFormCenter;

   try
      sdSettingsDialog.ShowModal;
   finally
     sdSettingsDialog.Free;
   end;
end;
Run Code Online (Sandbox Code Playgroud)

试图在设计器中更改Position属性,但似乎并不是对话框的中心.

你能告诉我这里有什么问题吗?

delphi user-interface delphi-xe delphi-xe2 firemonkey

7
推荐指数
1
解决办法
3097
查看次数

在FireMonkey中绘制像素的最快方法

我做了以下代码:

procedure TForm15.Button1Click(Sender: TObject);
var
  Bitmap1: TBitmap;
  im: TImageControl;
  Color: TColor;
  Scanline: PAlphaColorArray;
  x,y,i: Integer;
begin
  for i:= 1 to 100 do begin
    im:= ImageControl1;
    Bitmap1:= TBitmap.Create(100,100);
    try
      for y:= 0 to 99 do begin
        ScanLine:= Bitmap1.ScanLine[y];
        for x:= 0 to 99 do begin
          ScanLine[x]:= Random(MaxInt);
        end;
      end;
      ImageControl1.Canvas.BeginScene;
      ImageControl1.Canvas.DrawBitmap(Bitmap1, RectF(0,0,Bitmap1.Width, Bitmap1.Height)
                                     ,im.ParentedRect,1,true);
      ImageControl1.Canvas.EndScene;
    finally
      Bitmap1.Free;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法在Firemonkey中绘制像素?
我的目标是使用康威的生活游戏制作一个演示程序.

delphi delphi-xe2 firemonkey

7
推荐指数
1
解决办法
5821
查看次数

TOpenDialog/NSOpenPanel无法在沙盒Delphi应用程序中工作

Firemonkey应用程序中的TOpenDialog似乎存在问题,该应用程序是为Mac Appstore沙箱化的.我使用XE3,但它也存在于XE2中.我实际上在这里找到了QC报告,但它仍然没有得到解决:

http://qc.embarcadero.com/wc/qcmain.aspx?d=105344

有没有人有同样的问题,或任何想法如何解决它?

这很容易检查.只需在表单上放置一个TOpenDialog并调用Execute方法即可.根据Embarcadero说明对应用程序进行签名和沙箱:

http://docwiki.embarcadero.com/RADStudio/en/Mac_OS_X_Application_Development

当调用Execute时有一个延迟,应用程序冻结片刻,但没有显示任何内容.没有例外或错误消息.如果应用程序没有沙盒,则对话框可以正常工作.

此代码也不起作用,因此问题可能在TNSOpenPanel中的某个地方,由TOpenDialog调用,但遗憾的是我无法找到它.

var
  LOpenDir: NSOpenPanel;
begin
  LOpenDir := TNSOpenPanel.Wrap(TNSOpenPanel.OCClass.openPanel);
  LOpenDir.runModal;
  LOpenDir.release;
Run Code Online (Sandbox Code Playgroud)

我在Apple文档中读到,与没有沙箱的沙盒相比,使用Sandbox时,NSOpenPanel来自不同的类.我想这就是问题的原因.

任何想法将不胜感激.我们无法真正发布一个必须使用没有打开/保存对话框的文件的应用程序:)

顺便说一句,我尝试了项目选项中的权利的几种组合,但它们没有效果.

delphi macos sandbox firemonkey delphi-xe3

7
推荐指数
1
解决办法
987
查看次数

用于高DPI Windows的Delphi Firemonkey Scale

我认为在FireMonkey中扩展应用程序应该很容易,因为它应该也适用于Retina-Mac.似乎有一些背景魔法选择了另一种风格,但在Windows中似乎并非如此.

在VCL中有TForm.Scaled可以完成工作(或多或少).

对于FireMonkey,我发现Embarcadero的这篇文章,但似乎Embarcadero不太确定这种方法是否有用,因为在XE5中,sampleproject"ControlsDemo"不再包含scale-trackbar.它还需要在所有形式中都存在root-TLayout,可以设置比例因子.我的表单中没有这样的元素(我害怕添加一个,因为我不能确定我是否运行另一个firemonkey bug).

那么如何使用FireMonkey考虑不同的DPI设置?

编辑:我试图破解TPlatFormWin并将CurrentScreenScale设置为2但它不起作用:我有黑色工具栏,但没有缩放,但至少它使用了提供的TImage.MultiResBitmap中的HighRes替代.

delphi firemonkey delphi-xe5

7
推荐指数
1
解决办法
3755
查看次数

使用TScaledLayout和自定义样式绘制问题

我在组合TScaledLayout和从fmx中的位图样式设计器创建的自定义样式时遇到绘画问题.

为了演示,我加载了通过在位图样式设计器中选择"VCL/FMX的新样式" - >"另存为.style"创建的默认自定义样式.我在一些彩色矩形上放了几个标准控件:TScaledLayout上的红色和绿色,蓝色直接放在表单上.当我拉伸表格时,ScaledLayout上的控件上会出现彩色线条; 背景部分可见:

绘制拉伸控件的问题

如果我将表单的大小设置为与设计时尺寸完全匹配,则线条会消失.这似乎是一个非常重要的问题,我当然不能像这样一起使用这两个.有没有人对可能的修复或解决方法有所了解?

delphi firemonkey firemonkey-style delphi-xe7

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