powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Наследование фрейма с TDataSet
25 сообщений из 41, страница 1 из 2
Наследование фрейма с TDataSet
    #39924453
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть фрейм-заготовка на котором лежит сетка и набор данных.
Набор данных TUniQuery с пустым свойством SQL и, соответственно, нет persistent-полей.

Есть второй фрейм, который наследуется от первого. Всё шло хорошо, пока я не заполнил у НД свойство SQL и не создал поля.
При создании второго фрейма появляется ошибка: A component named qDataID already exists.
qDataID - это persistent-поле.

Я ведь полей в первом фрейме не создавал, поэтому дублей не должно быть.
В дизайне ошибок нет, только при создании фрейма.

Под фреймами я подразумеваю TUniFrame из UniGUI.

ЧЯДНТ?
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924472
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Обращаешься не в тот форум, имхо.))
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924474
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
В дизайне ошибок нет, только при создании фрейма

В смысле, в рантайме? Тогда похоже, что там пытается создаться ещё один набор полей. Для начала стоит посмотреть стек вызовов в момент ошибки и проследить логику.

X11
ЧЯДНТ?

Про Uni не в курсе. Из общих соображений - я бы не рекомендовал пользоваться persistent полями у SQL-датасетов. Пользы минимум, а геморроя много.
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924477
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
В смысле, в рантайме?


ага
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924478
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Тогда похоже, что там пытается создаться ещё один набор полей.


это я понимаю, я не понимаю, почему создается набор полей дважды
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924479
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Про Uni не в курсе. Из общих соображений - я бы не рекомендовал пользоваться persistent полями у SQL-датасетов. Пользы минимум, а геморроя много.


а как мне в DBGrid вывести данные?
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924480
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F
X11,

Обращаешься не в тот форум, имхо.))


я ещё не скопил нужную сумму, чтобы там задавать вопросы
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924485
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
а как мне в DBGrid вывести данные?

Точно так же. Persistent поля для этого не нужны (ну... если версия дельфы новее, чем 1.0).
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924486
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
это я понимаю, я не понимаю, почему создается набор полей дважды

Вот это уже может быть вопрос к неизвестному мне TUniFrame.
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924546
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
X11
а как мне в DBGrid вывести данные?

Точно так же. Persistent поля для этого не нужны (ну... если версия дельфы новее, чем 1.0).


Настраивать, вводить локализованные названия в DisplayCaption удобно в дизайне.
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924556
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Настраивать, вводить локализованные названия в DisplayCaption удобно в дизайне
да там масса свойств к-е удобно в дизайне задавать
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924561
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Настраивать, вводить локализованные названия в DisplayCaption удобно в дизайне.

Спасибо, я работал с Delphi 1.0 и помню, как оно там было. Но с тех пор технология немного ушла вперёд, и начиная с 2.0 в гридах появились колонки, в которых это не менее удобно настраивается без persistent fields.
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924709
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Настраивать, вводить локализованные названия в DisplayCaption удобно в дизайне.
Удобнее. А при обновлении структуры БД замучаешься искать ошибки. Поэтому лучше это делать все таки в рантайме. В нашей системе все настройки по отображению полей лежат в самой БД в описании поля.

По сути вопроса - смотри dfm всех фреймов и формы на которой они лежат. Скорее всего что-нибудь увидишь
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924712
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
А при обновлении структуры БД замучаешься искать ошибки. Поэтому лучше это делать все таки в рантайме.


Вот не совсем так.
Например, TpFibDataSet умеет автоматически менять параметры persistent-полей при открытии формы в дизайне.

А если бы у меня было всё в pas файлах, то действительно пришлось бы всё править ручками.

Ок, вот, например, UniQuery (DevArt) не умеет так делать, но всё равно - почему в редакторе кода должно быть удобнее?
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924715
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
По сути вопроса - смотри dfm всех фреймов и формы на которой они лежат. Скорее всего что-нибудь увидишь


неа, ничего нету "криминального"

В первом (родительском) фрейме - только НД (снимок экрана)

во втором (дочернем) уже с persistent-полями и поля в единственном экземпляре
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924722
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
В нашей системе все настройки по отображению полей лежат в самой БД в описании поля.

Меня всегда восхищало умение противопоставить одно плохое решение другому плохому решению.
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924723
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отбой, не заметил unigui..
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924727
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

покажи такой же снимок для дочернего фрейма
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924734
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
почему в редакторе кода должно быть удобнее?
Потому что пишется одна строка
Код: pascal
1.
2.
3.
4.
procedure AfterOpen(ADataSet: TDataSet);
begin
  ApplyFields(ADataSet);
end;

и где-то в служебных функциях
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure ApplyFields(ADataSet: TDataSet);
var
  LFieldsInfo: TArray<TFieldInfo>
  Li: Integer;
begin
  LFieldsInfo := LoadInfos(ADataSet: TDataSet);
  for Li := 0 to ADataSet.FieldCount - 1 do
    ApplyField(ADataSet.Fields[Li], LFieldsInfo[Li]);
end;


После этого в Description поля заносим всю нужную для отображения информациюИмя;1;16;0Здесь используется такой формат: DisplayLabel;Visible;Width;Align и при модификации поля в БД тут же изменяем его стиль отображения
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924736
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Меня всегда восхищало умение противопоставить одно плохое решение другому плохому решению.
Обоснуешь?
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924740
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
softwarer
Меня всегда восхищало умение противопоставить одно плохое решение другому плохому решению.
Обоснуешь?

Без проблем.
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924742
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius,

Такого же точно снимка не будет, потому что в дочернем уже созданы поля, в один снимок всё не влезет.
Запрос большой, плюс много полей, всё в один снимок не влезет, даже в два, наверное, не влезет.
Я сделал так: оставил только одно поле ID и склеил снимок из двух, вырезав SQL запрос:
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924748
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Здесь используется такой формат: DisplayLabel;Visible;Width;Align и при модификации поля в БД тут же изменяем его стиль отображения


А если с программой работают несколько пользователей и все нужны разные настройки столбцов/сеток?
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924758
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
_Vasilisk_
Здесь используется такой формат: DisplayLabel;Visible;Width;Align и при модификации поля в БД тут же изменяем его стиль отображения

А если с программой работают несколько пользователей и все нужны разные настройки столбцов/сеток?

Логично, что в БД хранятся дефолтные, а модификации пишутся локально в реестр и при необходимости (при изменении типа поля, например) - сбрасываются.
Ну я бы так сделал.
...
Рейтинг: 0 / 0
Наследование фрейма с TDataSet
    #39924762
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
В первом (родительском) фрейме - только НД (снимок экрана)

Так, чисто наобум - попробуй убрать этот KeyFields. Вдруг он создаёт поле под него, а потом оно конфликтует с полями из дочернего?
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Наследование фрейма с TDataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]