Delphi's properties

5 отговора 205 прегледа
#1

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)".Някакви идеи?

Благодаря Ви предварително.

Отговор
в отговор на RapidFire #2

Re: Delphi's properties

Разгледай сорса на стандартния юнит TypInfo (щото документацията за него съкс) и съм сигурен, че ще си отговориш на въпроса :-)

8 hobits = 1 hobyte
Отговор
в отговор на RapidFire #3

Re: Delphi's properties

Както ти отговориха - можеш, но само за тези properties, които са published, т.е. тези които излизат в Object Inspector-а.

---
...и аз пиша на кирилица!
Отговор
в отговор на timmyyy #4

Re: Delphi's properties

Благодаря, знаех си че там има полезни неща, просто не се бях сетил да погледна сорса.

Отговор
в отговор на ess #5

Re: Delphi's properties

Изпробвано можеш да видиш и public методите, което ме навежда на мисълта, че можеш да видиш и public property-тата. А с Debug Inspector можеш да видиш/променяш и private полетата, което пък ме навежда на мисълта, че има начин и тях има начин да бъзикаш, друг е въпроса, че не би трябвало да постъпваш така :-)

8 hobits = 1 hobyte
Отговор
в отговор на timmyyy #6

Re: Delphi's properties

Мммм, може би си прав, аз съм ги ръчкал тия работа с Delphi 1.0, и имам спомен че се връщаха само published.

А това, че Debug Inspector-а вижда всичко, може да е поради това, че като пускаш EXE-то, средата разполага с пълно debug info...

Anyway, TypInfo е истината, човека ще се оправи...

---
...и аз пиша на кирилица!
Отговор