Форум: "Базы";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];
Внизcan t do operation with opened DataSet Найти похожие ветки
← →
DeepProg (2002-10-12 13:31) [0]Можно ли вообще во время выполнения приложения управлять видимостью и читаемостью полей в DataControls (DBGrid)?
Если все-таки можно, то как?
– Я так понял, что надо закрывать набор данных (Table) на время описанных манипуляций.
← →
sniknik (2002-10-12 14:40) [1]каких манипуляций? где описаных? ничего не вижу.
видимостью - управляет свойство Visible.
читаемостью - ReadOnly.
во время операций с данными желательно выключать контроль визуальных компонент DisableControls;
после включать EnableControls;
думаю также ответил как ты спросил (непонятно и не к месту), разве случайно попал.
← →
KDS (2002-10-12 14:56) [2]Visible
Видимость можно устанавливать в двух местах:
1) на обьектах полей набора данных (в редакторе полей)
2) на обьектах колонок DBGrid (сделай dblClick на нем и сам увидиш).
ReadOnly
можно устанавливать только на обьектах колонок DBGrid!!!
Если установишь его в редакторе полей - лови глюки.
Все это можно смело делать во время выполнения, без закрывания набора данных.
← →
DeepProg (2002-10-12 15:08) [3]Вечно разжевывать надо }-|
Есть одна главная таблица и есть combobox, зачения которого определяют вид работы с БД(ну чисто математические операции).
Так вот при одном значении combobox поле А должно быть вычисляемым, а при другом - Lookup, а при трьетьем оно вообще не нужно. Когда тип поля Lookup - оно естественно должно быть нередактируемым, т.е я хочу исключить возможность юзера вписать в это поле что ему взбредет в голову, а чтобы потом не давиться ошибками типа wrong Value, нужно не допускать редактирование этого поля!!
Все это происходит в РАНТАЙМЕ - в этом-то и проблема - при попытке заткнуть вышеназванное поле возникает ошибка (см. сабж ветки)
Вот я и хочу узнать можно ли управлять, например, свойством ReadOnly DBGrid"a динамически или же нужно создавать два поля, одно из которых будет Calc, а другое - LookUp - и соответственно два поля в гриде?
Хотя по моему, все равно придется как-то временно закрывать DataSet... Может его режим менять? Все чт я пока пробовал - н работает!
← →
sniknik (2002-10-12 15:22) [4]DisableControls "отвязывает" DataSet от DBGrid"a и по идее его свойства можно менять.
← →
Anatoly Podgoretsky (2002-10-12 15:59) [5]DeepProg © (12.10.02 15:08)
Ненадо расзевывать, надо телепатам вопрос задавать.
Свойством ReadOnly ты можешь управлять как у DBGrid, так и у таблицы, но если операция требует закрытия набора данных, то как ты ни упирайся, а закрывать придется.
← →
DeepProg (2002-10-12 17:28) [6]КАК ЭТО СДЕЛАТЬ????
← →
DeepProg (2002-10-12 19:13) [7]
> sniknik © (12.10.02 15:22)
> DisableControls "отвязывает" DataSet от DBGrid"a и по идее
> его свойства можно менять.
к сожалению только по идее, ошибка та же
Какие еще будут предложения?
← →
sniknik (2002-10-12 23:08) [8]а положи код будут и идеи. а то может это тебя глючит а ты всему форуму напрягатся предлагаеш.
Только не надо сюда всю свою немерянную прогу пихать, выдели минимум который ошибку дает.
← →
DeepProg (2002-10-13 16:01) [9]Ну, вот вам кусок кода - ошибка генерится в строке, для которой дан комментарий
…
begin
Table1A.FieldKind:=fkLookUp;
DBGrid1.Columns[3].ReadOnly:=true; // - columns[3] - соответствует поле таблицы БД
fkData, которому значение присваивается
программно, динамически – из массива.
End;
Только не советуйте сделать его Calc"ом.
← →
sniknik (2002-10-14 01:23) [10]странный у тебя подход к делу как будто это мне надо а не тебе. и информацию выдавливаеш как одолжение делаеш.
ладно каков вопрос таков ответ.
следи внимательно абсолютно рабочий код
...
DBGrid1.Columns[1].ReadOnly:= false;
...
а также на бис
...
DBGrid1.Columns[1].ReadOnly:= true;
...
тоже работает!
p.s. ищи глюки п программе!
← →
ЮЮ (2002-10-14 04:38) [11]>ошибка генерится в строке, для которой дан комментарий
Ошибка генерирится на предыдущей строке. Поставь на неё отладчит и убкдишься
Table1A.FieldKind:=fkLookUp; Такое не сделаешь не дизайн, не в рантайм :-) Поле или существует в таблице fkData, или создается на клиенте (fkLookUp, fcCalculated). А вот в гриде, если хочешь в столбце видеть то одно, то друго, то третье, вот в нем и определяй, какое поле DataSet хочешь видеть. Но при этом ВСЕ ТРИ ПОЛЯ в дата сет УЖЕ должны быть определены.
← →
DeepProg (2002-10-14 15:38) [12]
> ЮЮ © (14.10.02 04:38)
> DeepProg © (12.10.02 15:08)
>или же нужно создавать два поля, одно из которых будет Calc, а другое - LookUp
значит изначально я мыслил верно(ну немножечко пролетел по поводу необходимости дублей полей в гриде),
как же много времени и сил понадобилось, чтобы и я, и все остальные это поняли!
Отсюда эрго: свое ПЕРВОЕ МНЕНИЕ ВСЕГДА САМОЕ ПРАВИЛЬНОЕ!!!
Всем спасибо.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c