![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как динамически менять имя метода/свойста? [D6, XP]
IAH © (2006-05-28 01:34:00)Т.е., грубо говоря, мне нужно запустить метод methodXX (или обратиться к свойству propertyXX), где вместо 'XX' подставляется некое зависящее от ситуации число.
Каким образом это можно сделать?
novill (2006-05-29 09:38:00) [1]
> мне нужно запустить метод methodXX
Вкуривать Methodname, MethodAdress, TMethod до просветления.
TUser (2006-05-29 04:45:00) [2]Если ХХ - это число, то надо сделать массив
property Prop [Index: integer]: ... read ... write ... ; default;
Подробности есть в справке и руководствах по Delphi.
ЮЮ (2006-05-29 03:39:00) [3]Может вместо меодов Прыгнуть10 или Прыгнуть20 (в зависимости от ситуации) выполнить метот Прыгнуть(КоличествоРаз) ? Да и Property параметраметрическими могут быть.
begin...end (2006-05-28 15:08:00) [4]> Юрий Зотов © (28.05.06 13:01) [2]
> > Как динамически менять имя метода/свойста?
> Никак.
Если имеются в виду те имена, которые используются RTTI, то их менять можно...
tesseract (2006-05-28 14:49:00) [5]можно создать массив процедурного типа.
Я например так для 1с addin-ы делаю. Мне 1c - имя функции/поля, а я данные.
SergP (2006-05-28 14:14:00) [6]
> Т.е., грубо говоря, мне нужно запустить метод methodXX (или
> обратиться к свойству propertyXX), где вместо 'XX' подставляется
> некое зависящее от ситуации число.
> Каким образом это можно сделать?
Зачем пытаться все делать через Ж..., если можно по-человечески?
Юрий Зотов (2006-05-28 13:01:00) [7]> Как динамически менять имя метода/свойста?
Никак.
> нужно запустить метод methodXX (или обратиться к свойству propertyXX),
> где вместо 'XX' подставляется некое зависящее от ситуации число.
А при чем тут изменение имени?
Жуков Олег (2006-05-28 02:24:00) [8]
> (или обратиться к свойству propertyXX), где вместо 'XX'
> подставляется некое зависящее от ситуации число.
Это возможно только для published свойств. См. функции из модуля TypInfo. Вот например код, который для Form1 установит новый цвет, обратившись к свойству Color по строке с его именем.
uses
TypInfo
var
Obj: TObject;
PropertyName: string;
NewPropertyValue: Integer;
PropInfo: PPropInfo;
Obj := Form1;
PropertyName := 'Color';
NewPropertyValue := clRed;
PropInfo := GetPropInfo(Obj, PropertyName);
SetOrdProp(Obj, PropInfo, NewPropertyValue);