C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Измениние списка полей в Tquery, Динамически изменить список
KhamRad
Отправлено: 13.04.2005, 23:51


Ученик-кочегар

Группа: Участник
Сообщений: 16



БД Paradox. Но это не важно.
При двойном щелчке на tQUERY появляется окошко в котором можно выбрать поля для вывода.
Вопрос.

Как в процессе выполнения менять этот список?
Спасибо. Желательно с кратенькими объяснениями.

Отредактировано KhamRad — 13/04/2005, 23:52
AVC
Отправлено: 14.04.2005, 08:15


Ветеран

Группа: Модератор
Сообщений: 1583



Что значит менять? (Желательно с кратеньким объяснением.)
Список полей определяется в момент открытия DataSet и зависит от запроса или таблицы. Просто некоторые из них могут быть видимы, а другие нет.
KhamRad
Отправлено: 14.04.2005, 09:04


Ученик-кочегар

Группа: Участник
Сообщений: 16



QUOTE (AVC @ 14/04/2005, 08:15)
Что значит менять? (Желательно с кратеньким объяснением.)
Список полей определяется в момент открытия DataSet и зависит от запроса или таблицы. Просто некоторые из них могут быть видимы, а другие нет.

Если кликнуть 2 раза по компоненту TQuery , то вызывается РЕДАКТОР ПОЛЕЙ. В котором можно выбрать некоторые||все поля что бы задать им желаемые свойства. Так вот, мне нужно программно менять этот список полей. Надеюсь на скорый ответ.
olegenty
Отправлено: 14.04.2005, 09:28


Ветеран

Группа: Модератор
Сообщений: 2412



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

нет, можно и в рантайме, и Persistent поля создавать, только не тем окном, а своим собственным, которое сам разработаешь. если ты на это отважишься, то для этого необходимо
1. Убить нафик все Persistent поля, имеющие место в данный момент
2. Открыть НД с условием, когда он будет пустым
3. Получить Fields и вывести их самописным интерфейсом для редактирования пользователем
4. По результату пользовательского ввода наплодить Persistent полей.
это будет работать без проблем. но "побыстрее" не получится. тут тебе работы на недельку-две, пока со всем разберёшься...
AVC
Отправлено: 14.04.2005, 10:41


Ветеран

Группа: Модератор
Сообщений: 1583



Ну ладно тебе olegenty, напугал человека.
Если нет полей, созданных на этапе проектирования (а если есть то надо проверять — говорят, что бывают конфликты) то некоторые параметры поля можно установить прямо на открытом DataSet'е. Правда интерфейс придется писать самому. Список полей известен, типы можно получить.
Gedeon
Отправлено: 14.04.2005, 11:21


Ветеран

Группа: Модератор
Сообщений: 1742



А я с olegenty согласен, зачем тратить столько времени на это, какая вообще необходимость это делать? Проще, гораздо проще оперировать видимостью колонок в гриде.
AVC
Отправлено: 14.04.2005, 11:28


Ветеран

Группа: Модератор
Сообщений: 1583



2Gedeon.
Я с ним и не спорю, просто видимость это не единственный параметр которым можно управлять. Лично я, обычно, устанавливаю такие:
DisplayLabel
DisplayWidth
DisplayFormat
Alignment
EditMask
ReadOnly
Visible
Но конечному пользователю это делать не даю. smile.gif

Отредактировано AVC — 14/04/2005, 11:25
Gedeon
Отправлено: 14.04.2005, 11:43


Ветеран

Группа: Модератор
Сообщений: 1742



2AVC а я и не думал что спорите, smile.gif просто высказал свою позицию, а то, что Вы перечислили все настраиваю тоже на гриде EhLib рулит.
AVC
Отправлено: 14.04.2005, 11:55


Ветеран

Группа: Модератор
Сообщений: 1583



Сеток много, а датасет 1. Использую его для хранения описаний. Поэтому сетку (и не только) настраиваю по датасету.
Gedeon
Отправлено: 14.04.2005, 12:09


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (AVC @ 14/04/2005, 11:55)
Сеток много, а датасет 1. Использую его для хранения описаний. Поэтому сетку (и не только) настраиваю по датасету.

Не факт, можно поспорить.
avc*
Отправлено: 14.04.2005, 12:18


Не зарегистрирован







QUOTE

Не факт, можно поспорить.

Очень надо?
Перефразирую. Сеток и прочих контролов, опирающихся на этот датасет много.
olegenty
Отправлено: 14.04.2005, 12:22


Ветеран

Группа: Модератор
Сообщений: 2412



2 AVC
управлять указанными свойствами поля без проблем можно и из грида, если нужно. каждая ж колонка, как миленькая, если не самодельно-служебная, указывает прямо на поле. вот по этому указателю и можно ориентироваться, не имея ну никаких совершенно проблем.

другое дело, когда мне нужно в рантайме работать с каким-то универсальным редактором чего-либо. но тогда пользователь в интерактиве нифига не трогает, а я сам всё создаю на лету, включая, кстати, и Persistent поля (те, что Lookup, и как следствие, все остальные) если требуется. но KhamRad-то просил это юзеру отдать. нефиг тогда морочиться с непосредственно полями. не вижу преимуществ, вижу только потенциальные грабли (при манипуляции Persistent полями).
Gedeon
Отправлено: 14.04.2005, 12:35


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (avc* @ 14/04/2005, 12:18)
Очень надо?

Это не предложение, а утверждение.
QUOTE

Перефразирую. Сеток и прочих контролов, опирающихся на этот датасет много.

И наоборот эта сетка может отражать наборы данных из разных датасэтов. biggrin.gif
AVC
Отправлено: 14.04.2005, 12:41


Ветеран

Группа: Модератор
Сообщений: 1583



Если это спор, то спор ни о чем. Можно делать и так и так. Хотя, мне кажется, что курсор все таки первоисточник, но это лично мое мнение. Как более правильно — на этот вопрос нет ответа, так как он некорректен (не из той категории).
В самом начале я имел ввиду, что написать интерфейс для управления отдельными свойствами поля открытого курсора (про грид там речь не шла) значительно проще, чем решать задачу в общем виде. smile.gif

Чисто формально biggrin.gif :
QUOTE

БД Paradox. Но это не важно.
При двойном щелчке на tQUERY появляется окошко в котором можно выбрать поля для вывода.

Вопрос.

Как в процессе выполнения менять этот список?

Если не брать во внимание виртуальных полей — Сменить таблицу или запрос.
Как визуализировать и работать с этим списком — это уже другой вопрос.
AVC
Отправлено: 14.04.2005, 12:51


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

И наоборот эта сетка может отражать наборы данных из разных датасэтов

Может. Но я написал "опирающихся на этот датасет". Т.е. постулировал, что датасет один.

Все. У меня кончается перерыв. biggrin.gif
KhamRad
Отправлено: 15.04.2005, 15:40


Ученик-кочегар

Группа: Участник
Сообщений: 16



Спасибо всем ответившим. Понял, что не туда сунулся. На самом деле пробовал новый компонет. И некоторые вещи у меня с ним не получались. Видел единственный выход в изменении списка полей. Теперь я оставил этот компонет для других целей и пользуюсь EhLib. Проблемма решена.

Вернуться в Работа с базами данных в C++Builder