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

Вниз

Помогите разобраться с компонентами   Найти похожие ветки 

 
Viacheslav   (2002-08-28 12:50) [0]

У меня на форме различные компоненты. Среди них есть компоненты типа DBEdit свойство ReadOnly которых первоначально установлено в True. Как можно поменять для этих компонетов свойство в False?
Заранее благодарен!


 
Skier ©   (2002-08-28 12:52) [1]

>Viacheslav
В цикле пройтись по Owner.Components[...]


 
Viacheslav   (2002-08-28 12:55) [2]

Skier
В том то и дело что не могу разобраться как это всё организовать - опыта мало в программирование на делфи, да и литературы почти 0


 
Skier ©   (2002-08-28 12:58) [3]

>Viacheslav
Ты эти DBEdit-ы клал на форму в дизайне или
создавал в run-time ?


 
Skier ©   (2002-08-28 13:02) [4]

>Viacheslav
А TDataSource.AutoEdit := False; не подойдёт ?


 
Viacheslav   (2002-08-28 13:04) [5]

>Skier
во время разработки формы, в дизайне.


 
Viacheslav   (2002-08-28 13:08) [6]

>Skier А TDataSource.AutoEdit := False; не подойдёт ?

Мне необходимо сделать, что-бы пользователи во время навигации по таблице не могли корректировать данные, поэтому я и включил ReadOnly в True


 
Skier ©   (2002-08-28 13:10) [7]

>Viacheslav

Не поможет ?


procedure SetReadOnlyProp(const AOwner : TComponent; const AValue : Boolean);
var
ii : Integer;
begin
if AOwner = nil then Exit;
for ii := 0 to AOwner.ComponentCount - 1 do begin
if AOwner.Components[ii] is TDBEdit then begin
with AOwner.Components[ii] as TDBEdit do begin
if ReadOnly <> AValue then ReadOnly := AValue;
end; //with
end; //if
end; //for
end; //SetReadOnlyProp



//.............



SetReadOnlyProp(Form1, False);


 
Viacheslav   (2002-08-28 13:16) [8]

>Skier
Спасибо! Попробую.
Немного может доработать придётся т.к. у меня на форме ДБЭдиты различных таблиц, а открывать для редакции надо будет для одной.


 
Skier ©   (2002-08-28 13:18) [9]

>Viacheslav
Тогда добавь к параметрам ещё и - ADataSet : TDataSet

SetReadOnlyProp(const AOwner : TComponent;
const ADataSet : TDataSet;
const AValue : Boolean);


 
Skier ©   (2002-08-28 13:22) [10]

>Viacheslav

Примерно так :


procedure SetReadOnlyProp(const AOwner : TComponent;
const ADataSet : TDataSet;
const AValue : Boolean);
var
ii : Integer;
begin
if (AOwner = nil) or (ADataSet = nil) then Exit;
for ii := 0 to AOwner.ComponentCount - 1 do begin
if AOwner.Components[ii] is TDBEdit then begin
with AOwner.Components[ii] as TDBEdit do begin
if (DataSource <> nil) and (DataSource.DataSet <> nil) then begin
if DataSource.DataSet = ADataSet then begin
if ReadOnly <> AValue then ReadOnly := AValue;
end; //if
end; //if
end; //with
end; //if
end; //for
end; //SetReadOnlyProp


 
Viacheslav   (2002-08-28 13:28) [11]

>Skier
Огромное спасибо!)
Первый вариант работает! Дальше постараюсь сам поразбираться.



Страницы: 1 вся ветка

Текущий архив: 2002.09.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
14-27200
esprit_bel
2002-08-12 08:54
2002.09.09
Винт


3-26933
mas_alexey
2002-08-20 18:58
2002.09.09
Создание локальной БД


1-27100
kerrik
2002-08-25 01:21
2002.09.09
Как узнать, когда прилож. (CreateProcess) загрузилось полностью?


1-27075
alexias
2002-08-28 12:47
2002.09.09
Отображение формул


4-27280
LordOfSilence
2002-07-19 13:02
2002.09.09
Изменить заголовок окна после ShellExecute