This question already has an answer here:
Minimum requirements to deploy FireMonkey on Windows
3 answers
For starters, I’m writing an application for a customer that relies heavily on custom styles. These styles are composed of several sub controls and visual effects (TBlurEffect, TShadowEffect, etc…)
On my dev machine these effects and styles render correctly with no errors (Windows Server 2012), the same goes for another test machine running windows 7. When attempting to run on one of the client’s servers, I receive an Abstract error when the style is applied. I created a test app with 4 different styles included (3 of which have effects and 1 which is just a TRectangle). The 3 effect styles all give the same Abstract error, but the simple rectangle style does not (leading me to believe this is the culprit).
I verified the clients machine is compliant to the specs, but I still feel something is off:
http://docwiki.embarcadero.com/RADStudio/XE5/en/FireMonkey_Platform_Prerequisites
Ultimately, I would like these effects to work, but if there is something off with the customers system compared to the Firemonkey requirements I would like to see if there is some kind of directive or global variable that I could use to check with, and disable the effects at runtime. If anyone could help that would be appreciated.
Customers dxdiag results:
—————— System Information
—————— Time of this report: 3/10/2015, 10:28:20
Machine name: ##REMOVED## Operating System: Windows Server 2003, Enterprise Edition (5.2, Build 3790) Service Pack 2 (3790.srv03_sp2_qfe.130703-1535)
Language: English (Regional Setting: English) System Manufacturer: Dell Inc.
System Model: PowerEdge 1950
BIOS: Phoenix ROM BIOS PLUS Version 1.10 2.7.0
Processor: Intel(R) Xeon(R) CPU E5310 @ 1.60GHz (8 CPUs), ~1.6GHz
Memory: 8186MB RAM
Page File: 3175MB used, 6861MB available
Windows Dir: C:WINDOWS DirectX Version: DirectX 9.0c (4.09.0000.0904) DX Setup Parameters: Not found
DxDiag Version: 5.03.3790.3959 32bit Unicode
My test Project:
program Project1;
uses
System.StartUpCopy,
FMX.Forms,
Unit1 in ‘Unit1.pas’ {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
My test Unit:
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.ListBox,FMX.NumberBox,FMX.TabControl;
type
TForm1 = class(TForm)
StyleBook1: TStyleBook;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Panel1: TPanel;
ComboBox1: TComboBox;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
Self.StyleBook:=StyleBook1;
ComboBox1.Items.Clear;
for I := 0 to StyleBook1.Style.ChildrenCount-1 do
Begin
ComboBox1.Items.Add(StyleBook1.Style.Children[i].StyleName);
End;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if ComboBox1.ItemIndex>-1 then
Panel1.StyleLookup:=ComboBox1.Selected.Text;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Self.StyleBook:=Nil;
Panel1.StyleLookup:=”;
ComboBox1.Items.Clear;
end;
end.
My Form:
object Form1: TForm1
Left = 0
Top = 0
Caption = ‘Form1’
ClientHeight = 480
ClientWidth = 640
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object StyleBook1: TStyleBook
Left = 256
Top = 192
ResourcesBin = {
464D585F5354594C4520322E3501060D74657374626C75727374796C65034401
060F74657374736861646F777374796C65039301060D74657374676C6F777374
796C65036A010611746573746E6F6566666563747374796C65030A0100545046
3007544C61796F757400095374796C654E616D65060D74657374626C75727374
796C6505416C69676E0706436C69656E740A53697A652E576964746805000000
00000040F108400B53697A652E48656967687405000000000000008A08401453
697A652E506C6174666F726D44656661756C74080756697369626C6508085461
624F726465720200000A5452656374616E676C6500095374796C654E616D6506
0E72656374616E676C657374796C6505416C69676E0706436C69656E740A5369
7A652E57696474680500000000000040F108400B53697A652E48656967687405
000000000000008A08401453697A652E506C6174666F726D44656661756C7408
00000B54426C757245666665637400095374796C654E616D65060F626C757265
66666563747374796C6508536F66746E6573730500000000009A9999FD3F0000
005450463007544C61796F757400095374796C654E616D65060F746573747368
61646F777374796C6505416C69676E0706436C69656E740A53697A652E576964
74680500000000000000C804400B53697A652E48656967687405000000000000
00C804401453697A652E506C6174666F726D44656661756C7408085461624F72
6465720201000A5452656374616E676C6500095374796C654E616D65060E7265
6374616E676C657374796C6505416C69676E0706436C69656E740A53697A652E
57696474680500000000000000C804400B53697A652E48656967687405000000
00000000C804401453697A652E506C6174666F726D44656661756C740800000D
54536861646F7745666665637400095374796C654E616D650611736861646F77
6566666563747374796C650844697374616E63650500000000000000C0004009
446972656374696F6E0500000000000000B4044008536F66746E657373050000
0000009A9999FD3F074F7061636974790500000000009A9999FE3F0B53686164
6F77436F6C6F720708636C61426C61636B0000005450463007544C61796F7574
00095374796C654E616D65060D74657374676C6F777374796C6505416C69676E
0706436C69656E740A53697A652E57696474680500000000000040F108400B53
697A652E48656967687405000000000000008A08401453697A652E506C617466
6F726D44656661756C74080756697369626C6508085461624F72646572020200
0A5452656374616E676C6500095374796C654E616D65060E72656374616E676C
657374796C6505416C69676E0706436C69656E740A53697A652E576964746805
00000000000040F108400B53697A652E48656967687405000000000000008A08
401453697A652E506C6174666F726D44656661756C740800000B54476C6F7745
666665637400095374796C654E616D65060F676C6F776566666563747374796C
6508536F66746E657373050000000000CDCCCCFD3F09476C6F77436F6C6F7207
07636C61476F6C64074F7061636974790500000000006666E6FE3F0000005450
463007544C61796F757400095374796C654E616D650611746573746E6F656666
6563747374796C6505416C69676E0706436C69656E740A53697A652E57696474
680500000000000040F108400B53697A652E4865696768740500000000000000
8A08401453697A652E506C6174666F726D44656661756C74080756697369626C
6508085461624F726465720203000A5452656374616E676C6500095374796C65
4E616D65060E72656374616E676C657374796C6505416C69676E0706436C6965
6E740A53697A652E57696474680500000000000040F108400B53697A652E4865
6967687405000000000000008A08401453697A652E506C6174666F726D446566
61756C7408000000}
end
object Button1: TButton
Position.X = 32.000000000000000000
Position.Y = 136.000000000000000000
Size.Width = 161.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 5
Text = ‘Assign StyleBook to Form’
OnClick = Button1Click
end
object Button2: TButton
Position.X = 32.000000000000000000
Position.Y = 192.000000000000000000
Size.Width = 161.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 3
Text = ‘Assign Style to Panel’
OnClick = Button2Click
end
object Button3: TButton
Position.X = 32.000000000000000000
Position.Y = 248.000000000000000000
Size.Width = 161.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
Text = ‘Clear Style Book and Style’
OnClick = Button3Click
end
object Panel1: TPanel
Align = Right
Position.X = 248.000000000000000000
Size.Width = 392.000000000000000000
Size.Height = 480.000000000000000000
Size.PlatformDefault = False
TabOrder = 4
end
object ComboBox1: TComboBox
Position.X = 32.000000000000000000
Position.Y = 56.000000000000000000
Size.Width = 161.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 6
end
object Label1: TLabel
Position.X = 32.000000000000000000
Position.Y = 40.000000000000000000
Text = ‘Style’
end
object BlurEffect1: TBlurEffect
Softness = 0.300000011920929000
end
end