Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.009 c
15-1227520279
TUser
2008-11-24 12:51
2009.01.18
Портативный усилитель


2-1228136694
Matveih1
2008-12-01 16:04
2009.01.18
Outlook


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


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 суббота





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский