• 0
x11

imagelist1 property source does not exists

Вопросы

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

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

Цитата

imagelist1 property source does not exists

 

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

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

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

1fiyUKzBQk_JeS-4KOE5TA.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 ответ на этот вопрос

  • 0

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

как оно могла поменяться или исчезнуть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

в pas-файле есть такое

 

{%CLASSGROUP 'FMX.Controls.TControl'}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

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

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

Поделиться сообщением


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

из-за директив условной компиляции

проверил - нет директив вообще никаких

Screenshot_10.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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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

Если брать System.ImageList и нажать Сохранить, то System.ImageList автоматически добавляется в секцию USES.

Поделиться сообщением


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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

а где должен быть {%CLASSGROUP 'FMX.Controls.TControl'} ?

Экспериментировал и заметил, что у др. модулей данных объявление в другом месте

Screenshot_14.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Всё встало на свои места. Объявление должно быть после implementation
 

implementation

{%CLASSGROUP 'FMX.Controls.TControl'}
{$R *.dfm}

 

Но я ручками ничего не переносил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А директива

{$R *.dfm}


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Только что, x11 сказал:

А директива

{$R *.dfm}


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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
15 часов назад, x11 сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От x11
      Не знаю, куда правильно задать вопрос. Решил здесь.
      Обычная стандартная связка TImageList + TActionList+TSpeedButton.
      в TImageList загрузил картинку 32*32.
      Всё связал и она появилась у кнопки на панели.
      Обратил внимание, что картинка 32*32 маловата и я решил загрузить картинку 48*48.
      Удалил из TImageList картинку и загрузил новую. Но размер картинки на кнопке остался 32*32.
      А потом ещё и исчезла картинка из TActionList.
       
      В TImageList только одна картинка.
      Delphi Berlin.


    • От DrMzi
      Доброго времени суток!
      Собираю тестовый проект под Win, иконки вижу.
      C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\Multi-Device Samples\User Interface\ListView\ListViewImageIndex
      Собираю тестовый проект под Android, иконок нет.
      Что я делаю не так ?

      Поправка. Такое поведение у apk на xiaomi mi5, запустил на Philips Xenium - иконки есть. 
       
    • От ENERGY
      Upd:
      Пожалуйста проголосуйте. Думаю это всех касается, т.к. проблема связана и с TImageList и с TImage. 
      https://quality.embarcadero.com/browse/RSP-18210
       
       
      Сейчас столкнулся с большой проблемой перед самым релизом для заказчика..
      17 картинок, разного размера. Сейчас в TImageList  сетка рисуется постоянно при обновлении Source каждой картинки. C каждым разом становится сетка четче.  Если раньше я просто обновлял на новые картинки, и таким образом решал проблему, то сейчас после обновления source картинок сетка остается на многих картинках, причем я даже не закрываю TImageList . Только начинаю замещать одни картинки, на других появляется сетка..
      И вот что теперь делать незнаю..
       
      Да кстати картинки портятся и в TImage со временем в Design Time.
      Сетка означает что картинку много раз масштабируют. Но почему не сохраняют оригинал, это мне не понятно..
      Что тут можно придумать?
       
      Delphi Berlin Update 2
    • От ENERGY
      Меня это проблема преследует со времен VCL...
      Подскажите как же ее решить...
      FMX TListView - ItemAppearanceName = ImageListItem.   Лежит fmx TimageList, в настройках указано 16x16 и прорачный цвет clNone, добавил одну иконку 16x16 с прозрачностью. Если запустить под Windows 10  все ок. Если запустить под Android то при выделении (selected) вместо прозрачности белый цвет. В результате иконка некрасиво обрамлена в белом квадрате.. Иконку делал в Axiallis IconWorkShop, сохранил как ico,  Пробовал заливать белым вместо прозрачного, и затем ставить в TimageList белый как прозрачный - тоже самое...
      Что же делать...
    • От RoschinSpb
      Статья: http://community.embarcadero.com/blogs/entry/timagelist101ru-1 Автор: Сергей Рощин Обзор новых возможностей, которые появились в компоненте и редакторе TImageList для Delphi R101 (2016 год, Version 24)
    • От FAN
      Очень нравится timagelist, большое спасибо!
      Но хотелось бы иметь возможность выбрать несколько destination images и отредактировать их свойства
      Также хотелось бы добавлять destination images не по одиночке а группами с заданными свойствами
       
       
       
    • От AndroidHalfNoob
      Что то не могу догнать: загрузил в ImageList 2 картинки, а вот в ListView не получается их засунуть.
      var  LItem: TListViewItem;

      если прописываю прямой путь к файлу на компе, то все работает
       


    • От Vitaldj
      Коллеги, появился TImageList и это очень хорошо. Но не совсем понятно до конца как он работает? К простой кнопке я его прикрутил TButton, и он картиночка отобразилась влева. Но мне совсем не нравиться вид ее! Она какая то маленькая и отступ слава маловат. Вот для примера посмотрите, наверху кнопка с иконок сделана по старому, положил TImage, а внизу по новому, через TImageList.
      Как менять параметры отображения у TButton?

      А, еще прикол! В маке она вообще не отображается!!! ))


    • От ovk
      Прошу помощи,как вывести иконки в ListView которые хранятся в StyleBook ?
      у меня есть база,в ней хранятся ID иконок, которые нужно выводить,в StyleBook лежат иконки, может у кого есть подобный опыт?!
    • От 7profy
      Имеем: FireMonkey приложение (в XE5).
      Создаем TStyleBook в котором существуют несколько TImage (по типу TImageList). Бросаем на форму кнопочку TSpeedButton. Вопросы:
      Возможно ли на этапе Design-time прикрутить изображение из StyleBook на эту кнопочку? Аналогично "прикрутить" изображение к TAction?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу