![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;
думаю также ответил как ты спросил (непонятно и не к месту), разве случайно попал.