Для начала я пишу приложение для клиента, которое сильно зависит от пользовательских стилей. Эти стили состоят из нескольких дополнительных элементов управления и визуальных эффектов (TBlurEffect, TShadowEffect и т. д.).
На моей машине разработки эти эффекты и стили отображаются корректно без ошибок (Windows Server 2012), то же самое касается другой тестовой машины под управлением Windows 7. При попытке запустить на одном из клиентских серверов я получаю абстрактную ошибку, когда стиль применяемый. Я создал тестовое приложение с 4 различными стилями (3 из которых имеют эффекты, а 1 — просто TRectangle). Все 3 стиля эффекта дают одну и ту же абстрактную ошибку, но стиль простого прямоугольника этого не делает (что заставляет меня поверить, что это виновник).
Я убедился, что клиентский компьютер соответствует спецификациям, но все еще чувствую, что что-то не так: http://docwiki.embarcadero.com/RADStudio/XE5/en/FireMonkey_Platform_Prerequisites
В конечном счете, я хотел бы, чтобы эти эффекты работали, но если что-то не так с системой клиентов по сравнению с требованиями Firemonkey, я хотел бы посмотреть, есть ли какая-то директива или глобальная переменная, которую я мог бы использовать для проверки и отключить эффекты во время выполнения. Если бы кто-нибудь мог помочь, это было бы оценено.
Результаты dxdiag клиентов: ------------------ Информация о системе ------------------ Время этого отчета: 3/10 /2015, 10:28:20 Имя компьютера: ##REMOVED## Операционная система: Windows Server 2003, Enterprise Edition (5.2, сборка 3790) Пакет обновления 2 (3790.srv03_sp2_qfe.130703-1535) Язык: английский (региональная настройка: Русский) Производитель системы: Dell Inc. Модель системы: PowerEdge 1950 BIOS: Phoenix ROM BIOS PLUS версии 1.10 2.7.0 Процессор: Intel(R) Xeon(R) CPU E5310 @ 1,60 ГГц (8 процессоров), ~1,6 ГГц Память: 8186 МБ Файл страницы ОЗУ: 3175 МБ занято, 6861 МБ доступно Каталог Windows: C:\WINDOWS Версия DirectX: DirectX 9.0c (4.09.0000.0904) Параметры настройки DX: Не найдено Версия DxDiag: 5.03.3790.3959 32-битный Unicode
Мой тестовый проект:
program Project1;
uses
System.StartUpCopy,
FMX.Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Мой тестовый модуль:
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.
Моя форма:
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