Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

can t do operation with opened DataSet [D6, Paradox]


DeepProg ©   (2002-10-12 13:31:00) 

Можно ли вообще во время выполнения приложения управлять видимостью и читаемостью полей в DataControls (DBGrid)?
Если все-таки можно, то как?
– Я так понял, что надо закрывать набор данных (Table) на время описанных манипуляций.


DeepProg   (2002-10-14 15:38:00) [1]


> ЮЮ © (14.10.02 04:38)


> DeepProg © (12.10.02 15:08)


>или же нужно создавать два поля, одно из которых будет Calc, а другое - LookUp

значит изначально я мыслил верно(ну немножечко пролетел по поводу необходимости дублей полей в гриде),
как же много времени и сил понадобилось, чтобы и я, и все остальные это поняли!

Отсюда эрго: свое ПЕРВОЕ МНЕНИЕ ВСЕГДА САМОЕ ПРАВИЛЬНОЕ!!!

Всем спасибо.


ЮЮ   (2002-10-14 04:38:00) [2]

>ошибка генерится в строке, для которой дан комментарий
Ошибка генерирится на предыдущей строке. Поставь на неё отладчит и убкдишься

Table1A.FieldKind:=fkLookUp; Такое не сделаешь не дизайн, не в рантайм :-) Поле или существует в таблице fkData, или создается на клиенте (fkLookUp, fcCalculated). А вот в гриде, если хочешь в столбце видеть то одно, то друго, то третье, вот в нем и определяй, какое поле DataSet хочешь видеть. Но при этом ВСЕ ТРИ ПОЛЯ в дата сет УЖЕ должны быть определены.


sniknik   (2002-10-14 01:23:00) [3]

странный у тебя подход к делу как будто это мне надо а не тебе. и информацию выдавливаеш как одолжение делаеш.

ладно каков вопрос таков ответ.

следи внимательно абсолютно рабочийкод
...
DBGrid1.Columns[1].ReadOnly:= false;
...
а также на бис
...
DBGrid1.Columns[1].ReadOnly:= true;
...
тоже работает!

p.s. ищи глюки п программе!


DeepProg   (2002-10-13 16:01:00) [4]

Ну, вот вам кусок кода - ошибка генерится в строке, для которой дан комментарий
…
begin
Table1A.FieldKind:=fkLookUp;
DBGrid1.Columns[3].ReadOnly:=true; // - columns[3] - соответствует поле таблицы БД
fkData, которому значение присваивается
программно, динамически – из массива.
End;


Только не советуйте сделать его Calc"ом.


sniknik   (2002-10-12 23:08:00) [5]

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


DeepProg   (2002-10-12 19:13:00) [6]


> sniknik © (12.10.02 15:22)
> DisableControls "отвязывает" DataSet от DBGrid"a и по идее
> его свойства можно менять.

к сожалению только по идее, ошибка та же
Какие еще будут предложения?


DeepProg   (2002-10-12 17:28:00) [7]

КАК ЭТО СДЕЛАТЬ????


Anatoly Podgoretsky   (2002-10-12 15:59:00) [8]

DeepProg © (12.10.02 15:08)
Ненадо расзевывать, надо телепатам вопрос задавать.
Свойством ReadOnly ты можешь управлять как у DBGrid, так и у таблицы, но если операция требует закрытия набора данных, то как ты ни упирайся, а закрывать придется.


sniknik   (2002-10-12 15:22:00) [9]

DisableControls "отвязывает" DataSet от DBGrid"a и по идее его свойства можно менять.


DeepProg   (2002-10-12 15:08:00) [10]

Вечно разжевывать надо }-|
Есть одна главная таблица и есть combobox, зачения которого определяют вид работы с БД(ну чисто математические операции).
Так вот при одном значении combobox поле А должно быть вычисляемым, а при другом - Lookup, а при трьетьем оно вообще не нужно. Когда тип поля Lookup - оно естественно должно быть нередактируемым, т.е я хочу исключить возможность юзера вписать в это поле что ему взбредет в голову, а чтобы потом не давиться ошибками типа wrong Value, нужно не допускать редактирование этого поля!!
Все это происходит в РАНТАЙМЕ - в этом-то и проблема - при попытке заткнуть вышеназванное поле возникает ошибка (см. сабж ветки)
Вот я и хочу узнать можно ли управлять, например, свойством ReadOnly DBGrid"a динамически или же нужно создавать два поля, одно из которых будет Calc, а другое - LookUp - и соответственно два поля в гриде?
Хотя по моему, все равно придется как-то временно закрывать DataSet... Может его режим менять? Все чт я пока пробовал - н работает!


KDS   (2002-10-12 14:56:00) [11]

Visible
Видимость можно устанавливать в двух местах:
1) на обьектах полей набора данных (в редакторе полей)
2) на обьектах колонок DBGrid (сделай dblClick на нем и сам увидиш).
ReadOnly
можно устанавливать только на обьектах колонок DBGrid!!!
Если установишь его в редакторе полей - лови глюки.

Все это можно смело делать во время выполнения, без закрывания набора данных.


sniknik   (2002-10-12 14:40:00) [12]

каких манипуляций? где описаных? ничего не вижу.
видимостью - управляет свойство Visible.
читаемостью - ReadOnly.
во время операций с данными желательно выключать контроль визуальных компонент DisableControls;
после включать EnableControls;
думаю также ответил как ты спросил (непонятно и не к месту), разве случайно попал.


Наверх

Титульная страница Поиск, карта сайта Написать письмо