[Delphi] - вопрос про RTTI
А дальше со своим PropInfo делай так
var
PropInfo: PPropInfo;
Source: TComponent;
procedure SetStringProperty(PropName: string);
var
strName: string;
begin
strName := Source.Name + '.' + PropName;
SetStrProp(Source, PropInfo, 'substitute_your_property_value_here');
end;
можно так:
var
MyStr: String
..
try
MyStr := (Form1.Components[i] as TLabel).Caption
except
//произошла хуйня
end;
В последнем посте - там понятно. А вот если при использовании GetPropIngo будет указано несуществующее у Source свойство- тоже исключение возникнет?
for i:= 0 to ComponentsCount-1 do
if Component[i] is TLabel then
TLabel(Component[i]).Caption := 'new caption'
else if Component[i] is TEdit then
TEdit(Component[i]).Text := 'new text'
ну и далее в таком же духе
А вот если при использовании GetPropIngo будет указано несуществующее у Source свойство- тоже исключение возникнет?Да. Но его можно обработать.
Тем кто говорит, что можно без RTTI: с RTTI можно не перечислять все возможные типы компонент.
Оставить комментарий
loks-po
У меня достаточно общий вопрос, который возник после прочтения соседнего поста о смене языка на элементах (допустим по старту).Я прошу мне по возможности "как для тупого" объяснить работу вот этого:
Этот кусок кода взят из книжки Канту и Гуча "Delphi Руководство разработчика" (любезно предоставленной Глебиусом, за что ему отдельное спасибо).
Т.е. как я понимаю, можно написать что-нибудь вроде:
Т.е. сам вопрос: можно ли с помощью GetPropInfo получать значения свойств таких как Caption и Text (которые чаще всего надо менять при смене языка)? Или я что-то не так понимаю?
Я бы может и почитал умную книжу, но до ее уровня я явно не дотягиваю, а чего-то промежуточного у меня просто нет. Тем более, там не описывается синтаксис GetPropInfo. В самой справке естественно ничего по этому нет. Там, где у мея вопросы - (может глупый вопрос) там ЧТО писать то?
Короче, объясните идиоту или скажите где я неправильно думаю....
Заранее спасибо.