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
Но конечному пользователю это делать не даю.
Отредактировано AVC — 14/04/2005, 11:25 |
|
Gedeon |
Отправлено: 14.04.2005, 11:43 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
2AVC а я и не думал что спорите, просто высказал свою позицию, а то, что Вы перечислили все настраиваю тоже на гриде 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 |
Перефразирую. Сеток и прочих контролов, опирающихся на этот датасет много. |
И наоборот эта сетка может отражать наборы данных из разных датасэтов.
|
|
AVC |
Отправлено: 14.04.2005, 12:41 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Если это спор, то спор ни о чем. Можно делать и так и так. Хотя, мне кажется, что курсор все таки первоисточник, но это лично мое мнение. Как более правильно — на этот вопрос нет ответа, так как он некорректен (не из той категории).
В самом начале я имел ввиду, что написать интерфейс для управления отдельными свойствами поля открытого курсора (про грид там речь не шла) значительно проще, чем решать задачу в общем виде.
Чисто формально :
QUOTE |
БД Paradox. Но это не важно.
При двойном щелчке на tQUERY появляется окошко в котором можно выбрать поля для вывода.
Вопрос.
Как в процессе выполнения менять этот список?
|
Если не брать во внимание виртуальных полей — Сменить таблицу или запрос.
Как визуализировать и работать с этим списком — это уже другой вопрос.
|
|
AVC |
Отправлено: 14.04.2005, 12:51 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
И наоборот эта сетка может отражать наборы данных из разных датасэтов
|
Может. Но я написал "опирающихся на этот датасет". Т.е. постулировал, что датасет один.
Все. У меня кончается перерыв. |
|
KhamRad |
Отправлено: 15.04.2005, 15:40 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Спасибо всем ответившим. Понял, что не туда сунулся. На самом деле пробовал новый компонет. И некоторые вещи у меня с ним не получались. Видел единственный выход в изменении списка полей. Теперь я оставил этот компонет для других целей и пользуюсь EhLib. Проблемма решена. |
|