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

imagelist1 property source does not exists


x11

Вопрос

Не могу понять, что случилось в проекте с TDataModule.

Проект мультиплатформенный. В прошлый раз сохранил, закрыл, ничего необычного. Сегодня открываю, а мне ошибку Delphi Berlin показывает.

Цитата

imagelist1 property source does not exists

 

И действительно, у TImageList отсутствует свойство source. Открываю, а он выглядит по-другому, как будто из VCL.

Закрываю проект, создаю мультиплатформенную форму, кладу TImageList на форму и о чудо - совершенно другой TImageList и свойство Source есть.

Что случилось с моим TDataModule? Как среде дать понять, что это мультиплатформенный проект?

1fiyUKzBQk_JeS-4KOE5TA.png

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

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

  • 0
  • Администраторы

У дата модуля есть свойство отвечающее за то, дата модуль какого фреймворка это: VCL или FMX. На основании этого свойства среда определяет TImageList какого фреймворка использовать. Возможно у вас стоит значение VCL.

2017-12-17_19-40-21.png

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

Попробуйте его задать.

У меня есть подозрение, что среда не смогла его прочитать, из-за директив условной компиляции.

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

Я же дал снимок - директив у второго датамодуля нет.

Я создаю новый мультиплатформенный проект, добавляю в него новый модуль данных - проблем нет и Imagelist правильный. Но при добавлении проблемного модуля данных к этому проекту получаю ошибку, что свойства Source нет, а затем ошибку:

Цитата

Unit "udmRepo.pas" is incompatible with the FMX framework used by the project.

Adding it may result in compilation errors or unexpected behavior. Continue?

 

 

 

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

Вот полный текст pas файда модуля данных

 

unit udmRepo;

interface

uses
  System.SysUtils, System.Classes, System.ImageList, FMX.ImgList;

type
  TdmRepo = class(TDataModule)
    ImageList1: TImageList;
    imgListListView: TImageList;
    procedure DataModuleCreate(Sender: TObject);
  private

    { Private declarations }
  public
    procedure SetStyle;
  end;

var
  dmRepo: TdmRepo;

implementation

uses
  FMX.Types, UDM, uShares, FMX.Dialogs, FMX.Styles, System.Types;

{%CLASSGROUP 'FMX.Controls.TControl'}

{$R *.dfm}


procedure TdmRepo.DataModuleCreate(Sender: TObject);
begin
  SetStyle;
end;

procedure TdmRepo.SetStyle;
 var
  aPlatformStyle, sStyle: String;
  aStyle: TFMXObject;
begin
   aStyle := nil;

   if not dm.UniConnection1.Connected then
     try
       dm.UniConnection1.Connect;
     except
       on e:exception do
       begin
         ShowMessage('Ошибка подключения к базе: ' + sLineBreak + e.Message);
         exit;
       end;

     end;// try


   sStyle := dm.GetOption2Param(AppStyleParamName);// название стиля берем из базы
   if sStyle = 'Default' then
   begin
     sStyle := '';
     exit;
   end;

   //если выбираем из ресурсов
   if sStyle <> '' then
   begin
     aPlatformStyle := constPlatform[TOSVersion.Platform] + sStyle;
     aStyle    := TStyleStreaming.LoadFromResource(HInstance, aPlatformStyle, RT_RCDATA);
     aStyle.StyleName := sStyle;

     if not assigned(aStyle) then
     begin
       ShowMessage('Стиль не найден: ' + aPlatformStyle);
       exit;
     end;
   end;// if comboStyles.ItemIndex > 0 then

   TStyleManager.SetStyle(aStyle);
end;


end.

 

Ссылка на комментарий
  • 0
1 минуту назад, Brovin Yaroslav сказал:

Почему в uses секции объявление двух модулей имадж листа?

не знаю, не заметил...

Я добавил в новый мультиплатформенный проект новый модуль данных. Кинул в него 2 ImageList

Вот листинг Uses

unit Unit2;

interface

uses
  System.SysUtils, System.Classes, System.ImageList, FMX.ImgList;

 

я ничего руками не дописывал

Ссылка на комментарий
  • 0
6 минут назад, Brovin Yaroslav сказал:

Почему в uses секции объявление двух модулей имадж листа?

Один от VCL, другой от FMX?

 

Видать, надо это спрашивать у разработчиков FMX и/или Delphi.

Ссылка на комментарий
  • 0
  • Администраторы
Только что, x11 сказал:

А директива

{$R *.dfm}


где должна находиться?

В любом месте в секции Implementation

Ссылка на комментарий
  • 0
15 часов назад, x11 сказал:

Объявление должно быть после implementation

Да, именно так, сам на это напарывался, даже вроде баг заводил. Понять это невозможно, это надо знать!
Раздел Uses может добавиться автоматически, например по Ctrl+A и он добавляется после implementation и перед %CLASSGROUP.

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

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

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

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

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

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

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

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

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

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