![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 ?