powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / динамический запрос
6 сообщений из 6, страница 1 из 1
динамический запрос
    #32569071
natascha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Текст запроса изменяется,изменяется кол-во полей,
как установить программно Displaylabel,DisplayFormat,DisplayWidth.
...
Рейтинг: 0 / 0
динамический запрос
    #32569182
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TFloatField(MyQuery.FieldByName('myfield')).DisplayFormat:=...
...
Рейтинг: 0 / 0
динамический запрос
    #32569205
natascha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Сделала.
...
Рейтинг: 0 / 0
динамический запрос
    #32569246
Tonny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я для этих целей использую константный массив в котором храню описание всех возможных полей, примерно следующего вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
const
   MaxFields=<n>;
   FieldInfo : array[ 0 ..MaxFields] of record
        n,c : string; //n - имя поля, c - его Caption (displaylabel)
        w : integer; //ширина
      end = (
    (n : 'ID'      ; c: 'Идентификатор'; w :  20 ),
    (n : 'NAME' ; c: 'Имя'                ; w :  80 ),
    ...
    );

после DataSet.open
а) вызывается процедура(параметр: dataset) , которая для каждого элемента массива FieldInfo:
1. ищет, есть ли такое поле в dataset
ff := DataSet.FindField(fieldinfo .n);
if ff<>nil then...
2. если есть - устанавливает ему DisplayLabel (можно сразу и DisplayFormat)

б) вызывается процедура(параметр: DBGRID) в которой аналогичным путём заполняется ширина колонки DBGRID.Columns.Width

полная схема, которую я использую:

a) TForm.Create()
считать из ini-файла данные массива FieldInfo (ширина колонок)

б) после открытия DataSet:
1. процедура(DataSet) установки видимости полей, DisplayLabel, DisplayFormat
2. процедура(DataSet) установки порядка следования полей
3. процедура(DBGrid) установки ширины колонок

в) перед закрытием DataSet, dataset.BeforeClose
считать информацию о ширине колонок в массив FieldInfo
считать информацию о позиции поля

г) TForm.destroy
записать в ini-файл данные массива FieldInfo

вроде бы ничего не забыл.
...
Рейтинг: 0 / 0
динамический запрос
    #32571872
natascha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Возьму кусочек.
...
Рейтинг: 0 / 0
динамический запрос
    #32571922
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзай FIBPlus - там для этих целей в базе есть репозиторий - специальные таблички, откуда эти дела автоматом берутся при открытии набора данных.

Для каждой таблицы и каждого столбца таблицы - Display Label, Visible, Display Width, Display Format, Edit Format, Triggered. Кроме того, для каждого констреинта (первичные ключи, уникальность, внешние ключи, чеки, уникальные индексы) можно определить свой понятный русский мессаже.
Кроме того, для каждого набора данных можно в репозитории держать значения фильтров, имена первичных ключей, гереаторов, SQL - запросов на выборку/изменения, и набор кондиций.

Все очень прозрачно и просто.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / динамический запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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