Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TVarRec


Учащийся ©   (2008-12-04 16:15:00) 

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

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

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


Anatoly Podgoretsky   (2008-12-05 15:44:00) [1]


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

procedure EnableCtrls(const Z: array of const);


Anatoly Podgoretsky   (2008-12-05 15:42:00) [2]

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

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

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


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


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

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


MsGuns   (2008-12-05 01:45:00) [4]

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

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

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


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


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

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


Loginov Dmitry   (2008-12-04 21:56:00) [6]

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


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


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


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


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

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

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


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


> учащийся


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


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


> Учащийся

можно то можно через 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;


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


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

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


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


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


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


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

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


Anatoly Podgoretsky   (2008-12-04 16:24:00) [13]


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

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

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


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

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


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


> > Препод сказал, что надо делать через 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;


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

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


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

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

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


Jeer   (2008-12-04 16:19:00) [18]

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


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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо