Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.04;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.02 c
3-11117
KIR
2002-10-16 12:31
2002.11.04
Подключение к IB: TDataBase или TIBDataBase


1-11165
AlexeyMir
2002-10-24 14:31
2002.11.04
Сообщения в Delphi


4-11541
Vit@l
2002-09-20 22:07
2002.11.04
Изменение цвета бордюра у TMemo


1-11306
Kurt
2002-10-23 11:44
2002.11.04
Как мне перейти из одного элемента редактирования в другое програ


7-11499
multik
2002-08-30 04:03
2002.11.04
Автозапуск для диска.