标签: firemonkey

如何在Delphi XE2中访问iOS加速度计?

如何使用Delphi XE2访问iOS中的加速度计?

我尝试通过IDE查找,但没有找到组件.

delphi accelerometer ios delphi-xe2 firemonkey

9
推荐指数
1
解决办法
1805
查看次数

为什么我的Firemonkey应用程序在OSX上打开终端窗口但在Win32上没有?

我在Delphi XE2中创建了一个简单的测试平台应用程序,并编译了该应用程序的Win32和OSX版本.
我压缩了OSX版本,以及libcgunwind dylib运行时文件的副本,并将此文件复制到我有权访问的Mac.
当我解压缩文件时,mac识别我的OSX应用程序,然后双击它.

反过来,这会打开一个终端窗口,出于某种未知的原因以及我的简单应用程序的形式.
应用程序本身运行并表现得很好,但我很好奇为什么终端窗口会在Mac上打开?

delphi macos delphi-xe2 firemonkey

9
推荐指数
1
解决办法
1825
查看次数

FireMonkey控件不能平滑地设置动画

背景

我使用一些FireMonkey控件创建了一个GUI.

  • 一些控件是动画的,它们的外观会自动更新.
  • 某些控件仅响应用户交互(滑块等)而更新.

问题

与用户控件的交互可防止更新动画控件,从而导致不稳定的不连续动画.

毛刺动画的视频

上面视频中的动画控件由TTimer组件驱动.使用FireMonkey的动画组件时问题仍然存在.

调查

滑块控件在调整时调用Repaint().平滑调整滑块将生成密集的Repaint()调用流,阻止其他控件更新.

该怎么办?

在一个控件不断更新时冻结动画不适合我的应用程序.我的第一个想法是交换Repaint()调用类似于VCL Invalidate()方法,但FireMonkey没有任何可比的AFAIK.

这个问题有一个很好的解决方法吗?

delphi firemonkey

9
推荐指数
1
解决办法
3161
查看次数

将SVG图形加载到FireMonkey应用程序需要做什么?

我能想到的有四种实现能够将SVG图形加载到Delphi应用程序中.

其中一个由Mattias Andersson(他是FMX.Canvas.VPR 的作者)与FireMonkey合作,但他还没有准备好发布代码.

第二个是由Martin Walter与VCL合作,但是开发人员退出Delphi并且没有计划转换为FireMonkey.

第三个是AGGPAS框架的一部分,与VCL一起工作,但没有FireMonkey.

Jason Southwell正在开发第四个,但尚未确定日期.

所以我的问题是:如果我今天想要一个SVG组件,而不是试图重新发明第五个(可能更多)的时间,那么我们要走哪条路?

delphi svg firemonkey image-rendering

9
推荐指数
2
解决办法
4238
查看次数

是否有用于FireMonkey应用程序的Web浏览器组件?

对于Delphi VCL,有TWebBrowser一些第三方组件TEmbeddedWebBrowser可用于浏览网页.

是否有类似的Web浏览器组件,但对于Delphi XE2中的Firemonkey框架(理想情况下支持Windows和Mac)?

delphi webbrowser-control delphi-xe2 firemonkey

9
推荐指数
1
解决办法
7328
查看次数

MakeScreenshot泄漏?

晚上好!

在当前的项目中,我遇到了一个相当令人担忧的内存泄漏,我似乎无法插入.

我让应用程序在标准使用情况下一夜之间运行,当我8小时后醒来时,它耗尽了大约750MB的内存,而它的起始速度却达到了50MB左右.Windows任务管理器不适合检查泄漏,除了允许您首先发现存在泄漏.

我已经清理了一些其他的内存泄漏,主要的一个与Firemonkeys有关TGlowEffect.它没有被检测到,ReportLeaksOnShutdown但是它的内存使用量在动态修改的对象上变得极其过度(例如旋转或缩放变化).

我已经将它跟踪到一个计时器(并且禁用它可以完全阻止泄漏),如果可能的话我需要帮助修复它.

说明:此代码使用Firemonkey MakeScreenshot函数将a的视觉外观保存TPanel (SigPanel)到a TMemoryStream.然后使用标准代码将此流数据上载到远程FTP服务器(见下文).在里面SigPanel,有4个TLabel孩子,1个TRectangle孩子和6个TImage孩子.

注意:CfId是一个全局字符串,它是根据随机extended浮点值生成的,随后浮点值将与格式化的DateTime一起进行哈希处理yyyymmdd_hhnnsszzz.这一代在创建表单时完成,并且一直重复直到它变为有效CfId(即不包含在Windows文件名中使用的非法字符).一旦它获得有效CfId,它就不会再次运行(因为我不再需要生成新的ID).这使我几乎可以完全消除重复的可能性CfId.

计时器中的代码如下;

var
  i : Integer;
  SigStream : TMemoryStream;
begin
  SigStream := TMemoryStream.Create;
  SigPanel.MakeScreenshot.SaveToStream(SigStream);
  SigPanel.MakeScreenshot.Free;
  if VT2SigUp.Connected then
  begin
    VT2SigUp.Put(SigStream,'Sig_'+CfId+'.png',False);
  end else
  begin
    VT2SigUp.Connect;
    VT2SigUp.Put(SigStream,'Sig_'+CfId+'.png',False);
  end;
    SigStream.Free;
end;
Run Code Online (Sandbox Code Playgroud)

与定时器NOT完全运行,则代码功能而不泄漏和ReportMemoryLeaksOnShutdownNOT生成的消息.启用定时器并允许至少"运行"一次,我得到大量泄漏,这会增加计时器运行的次数.报告的泄漏情况如下;

Small Block Leaks

1 - 12 …
Run Code Online (Sandbox Code Playgroud)

delphi memory-leaks delphi-xe2 firemonkey

9
推荐指数
1
解决办法
969
查看次数

阵列太大了吗?

目前我有一个TCube阵列

CreateCube : array[1..1000] of tcube;
Run Code Online (Sandbox Code Playgroud)

目前使用它们作为地图,因此您可能有30个立方体宽,20个立方体高,从而形成一个大网格.但是1000个立方体并不足以满足我的需要,我需要更多像10,000个立方体.

有这样大小的阵列会导致问题吗?还有其他选择吗?

delphi delphi-xe2 firemonkey

9
推荐指数
2
解决办法
785
查看次数

Firemonkey:将资源从资源添加到内存并使用它

VCL,我可以从资源加载一个字体而不保存它我可以从内存中使用它.

这是我使用的代码,它适用于VCL:

procedure TForm1.Button1Click(Sender: TObject);
var
   ResStream  : tResourceStream;
   FontsCount : DWORD;
begin
   ResStream  := tResourceStream.Create(hInstance, 'MyResourceName', RT_RCDATA);
   winapi.windows.AddFontMemResourceEx(ResStream.Memory, ResStream.Size, nil, @FontsCount);
   ResStream.Free();
   button1.Font.name := 'MySavedFontNameInResource';
end;
Run Code Online (Sandbox Code Playgroud)

在Firemonkey我刚改变button1.Font.name,button1.Font.family但不幸的是字体没有改变.所以我认为这段代码与firemonkey不兼容.

那么在Firemonkey中,如何从资源加载字体并将其临时保存到内存并直接从那里使用?

更新:

我看到这些页面:在firemonkey中安装字体,如何使用外部字体?

根据Ed先生的回答,似乎FMX中没有解决这个问题的方法.但也许我们可以加载字体,如果我们在运行应用程序之前安装它.我几乎尝试了一切,但我仍然无法加载字体.

delphi fonts firemonkey delphi-xe5

9
推荐指数
1
解决办法
2570
查看次数

将TBitmapLinks与FireMonkey样式设计器一起使用

我一直在设计FireMonkey控件,但有一个问题我遇到了一些实际问题,那就是如何使用FireMonkey样式设计器(特别是Bitmap样式设计器)将位图合并到FireMonkey样式中.某些样式对象(例如,TButtonStyleObject)具有BitmapLink属性,但我无法看到它们如何在为FireMonkey控件生成的新自定义样式中工作.

让我试着让问题尽可能透明.我添加了一个样书并将其资源设置为Delphi样式目录中的MetropolisUIGreen.Style(在XE7中,它位于C:\ Users\Public\Documents\Embarcadero\Studio\16.0\Styles中).然后我打开FireMonkey样式设计器并找到按钮式样式,它由TButtonStyleObject和TButtonStyleTextObject组成,两者都是TLayout的父级.TButtonStyleObject的SourceLookup属性值为MetroGreenstyle.png,它是一个StyleName,与加载了MetropolisUIGreen.png图像的TImage相关联.

选择TButtonStyleObject(其StyleName为背景),我检查NormalLink属性,它是TBitmapLinks的集合.据我所知,我在NormalLink中定义的BitmapLink包含有关应该用于按钮的位图的信息,包括与MetroGreenstyle.png文件的矩形区域对应的坐标(SourceRect).

我的假设似乎是错误的,因为当我使用图形程序检查MetroGreenstyle.png时,这些坐标没有什么有趣的.我已经研究过的许多其他风格的BitmapLinks,有太多我发现,与sourceRect坐标似乎并不实际定义stylelookup png文件的有意义的区域.

我显然有这个错误.BitmapLink的SourceRect坐标如何定义FireMonkey在渲染控件时应使用的位图.

- 编辑我实际问了四个问题.我已将此问题更新为仅包含一个问题.我将在其他帖子中包含其他问题. -

delphi firemonkey firemonkey-style

9
推荐指数
1
解决办法
1613
查看次数

如何删除listview搜索框中的清除按钮?

我想动态地将一个TEditButton放在ListView的搜索框中,所以我这样做了:

ListView                         := TListView.Create(Self);    
ListView.Parent                  := Self;   
ListView.Name                    := 'hello'; 
ListView.Height                  := 369;  
ListView.Width                   := 369; 
ListView.Align                   := TAlignLayout.Bottom; 
ListView.SearchVisible           := True; 
ListView.BeginUpdate;    

for i := 0 to ListView.controls.Count - 1 do
begin   
  if ListView.controls[i].ClassType = TSearchBox then 
  begin    
    SearchBox := TSearchBox(ListView.controls[i]);
  end; 
end;  

OKbtn := TEditButton.Create(SearchBox);  
OKbtn.Parent := SearchBox;    
OKbtn.Text   := 'OK';  
OKbtn.Width  := 30;   

SearchBox.AddObject(OKbtn);
ListView.EndUpdate;    
Run Code Online (Sandbox Code Playgroud)

但问题是clear button在编辑搜索框时也会出现问题.如何删除搜索框右侧的清除按钮(X)?

delphi android listview firemonkey

9
推荐指数
2
解决办法
1446
查看次数