Condicionar condicionalmente unidades para FMX ou VCL
Eu quero ter uma lista diferente de unidades nouses
cláusula dependendo da compilação para FMX ou VCL. No código abaixo eu tento testarFireMonkeyVersion
que funciona em um projeto FMX (label1.Text
é 'FMX'). Quando eu movo a instrução $ IF para ouses
cláusula recebo uma mensagem de erro ([dcc32 Error] fmx_text.pas(7): E2026 Constant expression expected
). Existe alguma maneira de obter a compilação condicional desejada?
unit fmx_text;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
System.Variants, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Types;
{$IF FireMonkeyVersion >= 16}
{$DEFINE HAS_FMX}
{$ELSE}
{$DEFINE HAS_VCL}
{$IFEND}
type
TForm2 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.fmx}
procedure TForm2.FormCreate(Sender: TObject);
begin
label1.Text := 'Undefined';
{$IFDEF HAS_FMX}
label1.Text := 'FMX';
{$ENDIF}
{$IFDEF HAS_VCL}
label1.Text := 'VCL';
{$ENDIF}
end;
end.