Форум: "Начинающим";
Текущий архив: 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.48 MB
Время: 0.005 c