Delphi's properties
5 отговора
205 прегледа
Delphi's properties
Здравейте,
Имам въпрос към хората разбиращи Делфи.
Искам да знам как може да се разбере дали даден TControl има определено property. Илюстрирам с пример:
procedure ShowCaption(ctl: TControl);
begin
if ctl is TLabel then
ShowMessage(TLabel(ctl).Caption);
end;
Проблема ми е, че имам прекалено много различни контроли на които искам да гледам специфичните принадлежности и искам да го направя без тези 1001 проверки "if ctl is TLabel" и преобразувания "TLabel(ctl)".Някакви идеи?
Благодаря Ви предварително.
Имам въпрос към хората разбиращи Делфи.
Искам да знам как може да се разбере дали даден TControl има определено property. Илюстрирам с пример:
procedure ShowCaption(ctl: TControl);
begin
if ctl is TLabel then
ShowMessage(TLabel(ctl).Caption);
end;
Проблема ми е, че имам прекалено много различни контроли на които искам да гледам специфичните принадлежности и искам да го направя без тези 1001 проверки "if ctl is TLabel" и преобразувания "TLabel(ctl)".Някакви идеи?
Благодаря Ви предварително.
Re: Delphi's properties
Разгледай сорса на стандартния юнит TypInfo (щото документацията за него съкс) и съм сигурен, че ще си отговориш на въпроса :-)
8 hobits = 1 hobyte
8 hobits = 1 hobyte
Re: Delphi's properties
Както ти отговориха - можеш, но само за тези properties, които са published, т.е. тези които излизат в Object Inspector-а.
---
...и аз пиша на кирилица!
---
...и аз пиша на кирилица!
Re: Delphi's properties
Благодаря, знаех си че там има полезни неща, просто не се бях сетил да погледна сорса.
Re: Delphi's properties
Изпробвано можеш да видиш и public методите, което ме навежда на мисълта, че можеш да видиш и public property-тата. А с Debug Inspector можеш да видиш/променяш и private полетата, което пък ме навежда на мисълта, че има начин и тях има начин да бъзикаш, друг е въпроса, че не би трябвало да постъпваш така :-)
8 hobits = 1 hobyte
8 hobits = 1 hobyte
Re: Delphi's properties
Мммм, може би си прав, аз съм ги ръчкал тия работа с Delphi 1.0, и имам спомен че се връщаха само published.
А това, че Debug Inspector-а вижда всичко, може да е поради това, че като пускаш EXE-то, средата разполага с пълно debug info...
Anyway, TypInfo е истината, човека ще се оправи...
---
...и аз пиша на кирилица!
А това, че Debug Inspector-а вижда всичко, може да е поради това, че като пускаш EXE-то, средата разполага с пълно debug info...
Anyway, TypInfo е истината, човека ще се оправи...
---
...и аз пиша на кирилица!