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

Вниз

TVarRec   Найти похожие ветки 

 
Учащийся   (2008-12-04 16:15) [0]

написал процедуру которая устанавивает Enabled для указанных контролов. Препод сказал, что надо делать через TVarRec. То есть:

procedure EnableCtrls(Ctrls: array of TVarRec; Value: Boolean);

Никак не разбирусь как при помощи TvarRec сделать.


 
Jeer ©   (2008-12-04 16:19) [1]

Теперь чуть подробнее - "контролов" тут даже не видно.


 
Palladin ©   (2008-12-04 16:19) [2]


> Препод сказал, что надо делать через TVarRec.

он поставил задачу делать через TVarRec или подсказал, что можно сделать через TVarRec ?


 
Сергей М. ©   (2008-12-04 16:20) [3]

TControl(Ctrls[i].VObject).Enabled := Value;

А препод твой имеет вкус к извращениям)


 
clickmaker ©   (2008-12-04 16:20) [4]

а почему не array of TControl?
или type TControlArray = array of TControl?


 
учащийся   (2008-12-04 16:21) [5]


> > Препод сказал, что надо делать через TVarRec.он поставил
> задачу делать через TVarRec или подсказал, что можно сделать
> через TVarRec ?

Подсказал. А мне вот стало интереско как.
А я делал так:

procedure EnableCtrls(Ctrls: array of TControl;
   Value: Boolean);
 var
   i: Integer;
 begin
   for i := Low(Ctrls) to High(Ctrls) do
      Ctrls[i].Enabled := Value;
 end;


 
учащийся   (2008-12-04 16:23) [6]

А какой из вариантов более правильный


 
Anatoly Podgoretsky ©   (2008-12-04 16:24) [7]


> а почему не array of TControl?

Предподователь сказал и глубоко плевать, что ты знаешь более оптимальные пути, надо именно через TVarRec, вдруг ты не умеешь.

Ты аполитично рассуждаешь и нифига в дидактике не понимаешь.


 
Jeer ©   (2008-12-04 16:25) [8]

Который работает.


 
Сергей М. ©   (2008-12-04 16:26) [9]


> какой из вариантов более правильный


Твой точно не правильный, ибо препод изрек "надо делать через TVarRec", т.е. видимо с явным использованием этого типа , а в твоем коде TVarRec"ом пахнет лишь косвенно, т.е. неявно.


 
Palladin ©   (2008-12-04 16:30) [10]


> учащийся   (04.12.08 16:21) [5]

Ну если подсказал, можешь глубоко наплевать на его советы. Бо делаешь ты абсолютно верно.


 
jack128_   (2008-12-04 16:32) [11]


> Учащийся

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

что нить типа такого:

procedure EnableCtrls(Ctrls: array of const; Value: Boolean);
var
 I: Integer;
 V: TVarRec;
begin
 for I := low(Ctrls) to high(Ctrls) do
 begin
   V := Ctrls[I];
   if (V.VType = vtObject) and (V.VObject is TControl) then
     TControl(V.VObject).Enabled := Value;
 end;
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
 EnableCtrls([Self, Button1, nil, "всякая хрень"], True)
end;


 
Сергей М. ©   (2008-12-04 16:32) [12]


> учащийся


procedure EnableCtrls(Ctrls: array of const; Value: Boolean);


 
Сергей М. ©   (2008-12-04 16:36) [13]


> для указанных контролов


Это, кстати, не означает, что все эл-ты открытого массива Ctrls обязаны ссылаться на контролы.

Так что препод вполне мог быть и прав, подсказав про TVarRec.

Или в вопросе топикстартера прозвучала уже отсебячина)


 
Loginov Dmitry ©   (2008-12-04 21:56) [14]

> Препод сказал, что надо делать через TVarRec.


Гони этого препода сюда! Здесь подскажут актуальные методы практологии.


 
Германн ©   (2008-12-05 01:18) [15]


> Здесь подскажут актуальные методы прАктологии.

Очень подходящий для сего форума вариант написания данного медицинского термина.


 
MsGuns ©   (2008-12-05 01:45) [16]

>учащийся   (04.12.08 16:21) [5]

Это все замечательно и даже корректно, но один маленький вопрос - а откуда ентт самый эррэй возьмется ? И не проще ли вместо этого массива с темным происхождением, мутным настоящим и туманным будущим перебирать контролы с какого-нибудь контейнера ?

Кстати, неплохо бы представить светлому взору присутстующих что из себя представляет этот загадочный TVarRec ?


 
jack128_   (2008-12-05 15:29) [17]


> Кстати, неплохо бы представить светлому взору присутстующих
> что из себя представляет этот загадочный TVarRec ?

все присутстующие могут сами посмотреть, что это за VarRec в модуле System.pas


 
Anatoly Podgoretsky ©   (2008-12-05 15:42) [18]

> jack128_  (05.12.2008 15:29:17)  [17]

Глупо лезть в генофонд, когда TVarRec документирован.

Автор тебя предподователь запутывает, он оиджает подачу  в функцию фактического аргумента типа открытый массив констант и обращение к TVarRec внутри функии.
В генофон надо лезть если интересует реализация.


 
Anatoly Podgoretsky ©   (2008-12-05 15:44) [19]


> То есть:
>
> procedure EnableCtrls(Ctrls: array of TVarRec; Value: Boolean);
>

procedure EnableCtrls(const Z: array of const);



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

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

Наверх




Память: 0.51 MB
Время: 0.013 c
1-1206352689
tytus
2008-03-24 12:58
2009.01.18
Как послать сообщение форме из скрипта FastReport


3-1213079849
Артем
2008-06-10 10:37
2009.01.18
проблема при работе с таблицами FoxPro 2.5


15-1227442403
Slider007
2008-11-23 15:13
2009.01.18
С днем рождения ! 22 ноября 2008 суббота


2-1228304178
TStas
2008-12-03 14:36
2009.01.18
Как свернуть все окна сразу?


2-1228245696
GGGG
2008-12-02 22:21
2009.01.18
Переопределение