2012-02-25 16 views
5

Ho alcuni controlli virtuali che fanno parte di un sistema di progettazione che ho creato. Imitano i componenti di delphi, tranne che sono completamente disegnati dal proprietario. Il problema che ho di fronte è che, poiché il mio sistema di proprietà è in qualche modo diverso da Delphi ordinario - non posso usare un ispettore RTTI per modificare le proprietà.Delphi non-rtti inspector

Qualcuno sa di un ispettore che guarda e si comporta come il normale ispettore delphi, ma che mi consente di definire le proprietà in base al codice?

E, se possibile, uno che mi permette di definire le enumerazioni:

with edInspector.Items.add('align') do 
Begin 
    Options.add('alLeft',ftord(TMyAlign.azLeft)); 
    Options.add('alTop',ord(TMyAlign.azTop)); 
    Options.add('alRight',ord(TMyAlign.azRight)); 
    Options.add('alBottom',ord(TMyAlign.azBottom)); 
    Options.add('alClient',ord(TMyAlign.azClient)); 
end; 

e complesse tipologie:

with edInspector.Items.add('font') do 
Begin 
    subitems.add('name',dtString).value:=def_FontName; 
    subitems.add('size',dtInteger).value:=def_fontSize; 
    subitems.add('color',dtColor).Value:=def_fontColor; 
end; 
+2

Cosa intendi con "il mio sistema di proprietà è in qualche modo diverso da Delphi ordinario"? Sei a conoscenza della differenza tra proprietà pubbliche e pubblicate? –

+0

Lui lui, sì. Im proprietà di polling da un sistema esterno, il che significa che sono memorizzate in coppie nome/valore in oggetti personalizzati. Quindi non sono visibili dal normale RTTI, devo ottenerli/impostarli manualmente –

+0

Ok, se tutto ciò che è diverso è il tuo meccanismo di persistenza, usa le proprietà pubblicate dichiarate con "Memorizzato Falso" e la compilazione nell'Ispettore oggetti per la modifica del tempo di progettazione. Se hai bisogno di aiuto con il tuo meccanismo di persistenza (ad esempio convertendo il testo in valori che puoi assegnare a proprietà tipizzate normalmente), dai un'occhiata a come funzionano TReader e TFiler. –

risposta

2

Dare Inspex una prova. È molto bello.

http://www.raize.com/DevTools/Inspex/Default.asp

È possibile aggiungere proprietà in modo dinamico, e avrete editor di proprietà per la maggior parte dei tipi comuni.

Può comportarsi in modo simile all'ispettore dell'oggetto Delphi (consente di modificare i set, se si aggiungono più oggetti, rileva quali proprietà sono le stesse e nasconde le altre e fa lo stesso per i valori delle proprietà).

Mostra le proprietà in una struttura ad albero se ci sono più livelli. Puoi popolarlo facilmente aggiungendo TObject, tramite una stringa o aggiungendo le proprietà una per una.

Screenshot:

Screenshot

+0

Sembra buono, ma non è gratuito. Avrei dovuto dire che vorrei un'alternativa gratuita. –

0

Con Delphi Runtime Inspector, si sarà in grado di vedere oggetti informazioni a run-time.

+0

Dovresti certamente adattarlo per soddisfare i tuoi requisiti. – menjaraz

+0

Non desidero informazioni di runtime. Voglio modificare le mie strutture che definisco per codice in fase di runtime. Ma non voglio ispezionare oggetti "reali". –

Problemi correlati