Перейти к содержанию
Fire Monkey от А до Я
  • 0

Есть ли директивы компилятора для определения проект создан на VCL или FMX


rareMax

Вопрос

Добрый день.

 

В моем коде нужно использовать таймер. При этом этот код должен работать как на VCL так и на FMX. Есть ли директива компилятора, что бы можно было сделать нечто похожее:

 

uses

  SysUtils,
  Classes,
  Rtti,
  Types,
{$IFDEF IsFMX}
  FMX.Types,
{$ELSE}
  Vcl.ExtCtrls,
{$ENDIF}
  System.Generics.Collections;

 

или же придется в конечном проекте самому указывать такую директиву? То есть мне нужна директива для определения в каком проекте (VCL or FMX) будет выполняться код. 

 

Спасибо.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Я может что-то неправильно делаю, подскажите.

 

Если в Uses прописан  fmx.types в котором определен TFmxObject, то выбирает выбирает FMX.Graphics иначе наоборот, но как быть если 1 модуль у меня используется и для VCL  и для FMX.. Если каждый раз комментировать fmx.types, то проще просто сделать в заголовке {$DEFINE FMX}...

Ссылка на комментарий
  • 0

Похоже, вы правы. Может Ярослав прокомментирует эту ситуацию. Я сделал так:

unit Unit2;

interface

uses
  {$IF DECLARED(TFmxObject)}FMX.Graphics{$ELSE}VCL.Graphics{$ENDIF};

  function MakeBitmap: TBitmap;

implementation

function MakeBitmap: TBitmap;
begin
   Result := TBitmap.Create;
   Result.SetSize( 100, 100 );
   Result.Canvas.Ellipse( 0, 0, 100, 100 );
end;

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, Unit2,
  FMX.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
   Canvas.DrawBitmap( MakeBitmap, RectF( 0, 0, 100, 100 ), RectF( 0, 0, 100, 100 ), 1 );
end;

end.

И получаю следующее:

 

5153927.jpg

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...