Jump to content
View in the app

A better way to browse. Learn more.

FGX Native

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Message added by Viktor Akselrod,

Please be aware that these comments were copied here from another source and that the date and time shown for each comment may not be accurate.

  • Status: Fixed
  • Priority: Normal
  • Resolution: Fixed
  • Platform: Android
  • Affects version 1.17.0.0
  • Fix version: 1.18.0.0

размещаю фрейм на стиле, collectionView находится на отдельной форме, причем, не важно, прописываю я количество элементов в GetItemCount или нет

ошибка : Project raised exception class EClassNotFound with message 'Class TfreTovCardForView not found'.

Ошибка возникает при открытии формы, содержащей этот CollectionView, причем, если разместить этот же фрейм на любом контейнере формы все работает отлично, но если разместить в стиле выходит эта ошибка.

 

User Feedback

Recommended Comments

Alan

Active subscription

Where is TfreTovCardForView?

Is this something you created? Do you need to add the unit to the uses?

I think you will need to supply a small test project.

Аскар Джакишев

Active subscription

TfreTovCardForView это tframe, где размещены базовые элементы карточки товара в списке, в модуле uses он объявлен, если разместить этот frame на форме, то все отлично, если взять все элементы с фрейма и разместить внутри стиля, тоже все отлично, но, разместив фрейм на стиле приложение закрывается с критической ошибкой.

Провел эксперимент : создал фрейм с минимальной вложенностью элементов, только tlabel и tmemo возникла та же самая ошибка "Project raised exception class EClassNotFound with message 'Class Tframe1 not found", но уже с новым фреймом.

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

  • Administrators

На вашей стороне проблема решается регистрацией класса фрейма в RTL:

program Project1;
uses
  FGX.Application,
  FGX.Forms,
  System.Classes,
  Form.Main in 'Form.Main.pas' {FormMain: TfgForm},
  main in 'main.pas' {Frame1: TfgFrame},
  Unit2 in 'Unit2.pas' {Frame2: TfgFrame};

{$R *.res}

begin
  RegisterClass(TFrame1);

Особенность в реализации механизма серилизациии/десерилизации компонентов в RTL. А именно в поиске класс типа по имени. Когда фрейм лежит на форме, то при десерилизации класс тип берется из RTTI информации о поле класса содержащего фрейм и из класс группы (где все компоненты себя регистрируют). 

image_2024-03-14_22-01-23.png

В ходе работы TfgCollectionView клонирует стиль, которые может содержать фрейм. Однако, в этом случае форма не используется и как результат класс фрейма нигде не найти. Это решается ручной регистрацией класса фрейма в RTL.

В ходе фикса, мы добавили автоматическую регистрацию новых добавляемых фреймов в IDE. Однако, это буде работать только для новых фреймов. Для уже созданных необходимо вручную добавить этот код:

uses
  FGX.ClassStorage;

initialization
  TfgClassStorage.RegisterClass(<Имя класса фрейма>);
end.
  • Administrators

Изменено Статус на Fixed

Изменено Резолюция на Fixed

Изменено Версия с исправлением на 1.18.0.0

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.