标签: firemonkey

Delphi XE2中的FireMonkey框架直接支持哪些Mac数据库?

面对在纯Mac环境中工作的公司开发数据库应用程序的任务,Delphi FMX应用程序使用的中央数据库服务器有哪些选择(除了显而易见的设置Windows或Linux框)?

database delphi macos delphi-xe2 firemonkey

10
推荐指数
1
解决办法
2812
查看次数

无法使用XE2 Update 4在OS X 10.7.3上调试FireMonkey应用程序

通过互联网搜索来到这里的人的简短回顾.

在某些安装中,Delphi无法在OS X上调试FireMonkey应用程序.症状:Delphi开始加载Debug桌面然后锁定.在PAServer中按Ctrl + C会停止PAServer并解除Delphi的解冻.使用Delphi XE2 Update 4和OS X 10.7.3观察到了这个问题.

下面附有更长的描述.


我有一个全新的Mac Mini(mc815z/a型号 - i5 2.3 GHz/2GB/500GB/Nvidia Intel HD Graphics 3000).它附带OS X Lion(10.7),我升级到10.7.3.

在我的主计算机上(Windows 7 64位)运行Delphi XE2 Update 4.我已经从setup_paserver.zip(15.656.945字节)安装了平台助手.它首先安装了Java(适用于Mac OS X 10.7 Update 1的Java).我通过paserver.command启动PAServer,它似乎工作正常.PAServer称它是版本1.0.2.

然后我设置了一个远程配置文件,它工作正常(Test Connection报告成功).

当我运行(通过调试)一个FireMonkey项目(我尝试了各种Sample项目以及新的,最小的FireMonkey应用程序)时,Delphi开始切换到Debug布局然后冻结.PAServer报道:

Process Control Server启动pid 343 exe build 2012年1月15日

sentinelFunc 345

[每次尝试调试程序时,第二行中的数字都不同.]当时没有任何事情发生.我可以用Ctrl-C杀死PAServer并解冻Delphi.然后Delphi报告错误:

调试器断言失败:第663行的..\win32src\rproxy.cpp中的"obj"

包文件对我来说似乎很好:

包装内容

我已在本地以Admin组中的用户身份登录.

我可以从中启动应用程序/Users/primoz/Applications/Embarcadero/PAServer/scratch-dir.没有问题.Run without debugging在Delphi中也有效.只有在我尝试调试我的应用程序时才会出现此问题.


编辑:这似乎是我的Delphi安装的问题.我从我的笔记本(也运行XE2 Update 4)尝试了同样的功能,它运行得很好.


编辑:这似乎与我的调试桌面有关.当我将调试桌面更改为与编辑桌面相同时,问题就消失了.


编辑:只有在调试桌面上显示"线程状态"窗口时才会出现此问题.此外,这与我的Delphi安装有关 - 我测试的另一台计算机工作正常,可以看到'Thread Status'窗口.

delphi macos firemonkey

10
推荐指数
1
解决办法
2043
查看次数

Delphi Firemonkey同时从库中选择多张图片

我需要在我的Android应用程序中创建一个功能,允许用户打开手机图库,一次选择多张图片,然后将选定的图片保存在我的本地数据库中.我需要的是使用Android Intent获取所选图片(文件名和路径)的方法.希望你能理解我的问题.

我正在使用此代码:

if TPlatformServices.Current.SupportsPlatformService(IFMXTakenImageService,
  IInterface(ImageService)) then
begin
  Params.RequiredResolution := TSize.Create(640, 640);
  Params.OnDidFinishTaking := DoDidFinish;
  ImageService.TakeImageFromLibrary(SpeedButton2, Params);
end;

procedure TfGallery.DoDidFinish(Image: TBitmap);
begin
 Image1.Bitmap.Assign(Image);
end;
Run Code Online (Sandbox Code Playgroud)

不幸的是,此代码可以从图库中返回一次图像.

编辑 - 根据Nick Cardoso的答案,以下代码适用于问题的第一部分:

Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_PICK);
intent.setType(StringToJString('image/*'));
intent.setAction(TjIntent.JavaClass.ACTION_GET_CONTENT);
Intent.putExtra(TJIntent.JavaClass.EXTRA_ALLOW_MULTIPLE,true);
LaunchActivity(Intent);
Run Code Online (Sandbox Code Playgroud)

上面的代码用于选择多张图片.现在我很难找到一个解决方案来回复(在回调函数中)Delphi中的选定文件!

delphi android firemonkey

10
推荐指数
1
解决办法
1469
查看次数

如何在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
查看次数

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
查看次数

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
查看次数

如何删除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
查看次数