PDA

Visualizza la versione completa : [DELPHI] Modificare i membri privati della classe base


mondobimbi
02-08-2007, 19:29
esiste una classe in free pascal (non so se c'è l'equivalente in borland delphi) che permette di scrivere un file PostScript come se si disegnasse su un TCanvas facendo tutte le conversioni del caso (per esempio le coordinate di partenza di un TCanvas sono in alto a sx, mentre in PostScript si parte dal basso a sx).
Questa classe si chiama TPostScriptCanvas.
Utilizzare questa classe permette di scrivere codice PostScript senza conoscerlo nel dettaglio.
Ora però vorrei derivare da questa classe una nuova classe che abbia un metodo che permetta di introdurre del codice PostScript tal quale, in particolare dovrei scrivere su un membro privato fDocument che è un TstringList, che contiene il corpo del documento in PostScript.
Mi chiedevo se questo fosse possibile senza riscrivere la classe di base (aggiungendo per esempio una proprietà che mi esponesse il TStringList del documento) in modo che un eventuale upgrade della libreria risultasse indolore.
spero di essermi spiegato
un saluto
sergio

alka
02-08-2007, 22:08
Non so se ho ben capito il problema, quindi provo a ridirlo per verifica.

Tu vorresti derivare una tua classe da quella che hai menzionato, facendo in modo che qualsiasi modifica nella classe base non influisca su quella che hai implementato tu?

mondobimbi
03-08-2007, 09:22
no, vorrei poter modificare alcuni membri privati della classe base.
sergio

alka
03-08-2007, 11:04
Originariamente inviato da mondobimbi
no, vorrei poter modificare alcuni membri privati della classe base.

Non è possibile, per i principi OOP, modificare i membri privati della classe base.

Non hai il sorgente della classe o della libreria a cui ti riferisci?

mondobimbi
03-08-2007, 11:54
si, ho i sorgenti con licenza gpl, e quindi posso modificarli.
grazie del chiarimento
sergio

alka
03-08-2007, 12:32
Originariamente inviato da mondobimbi
si, ho i sorgenti con licenza gpl, e quindi posso modificarli.
Beh, in tal caso, puoi tranquillamente spostare ciò che ha una visibilità private elevandola almeno a protected; non è un'operazione che andrebbe generalmente fatta, poiché significa esporre un membro ad una visibilità superiore rispetto a quella che era stata pensata dallo sviluppatore, ma se devi risolvere un'esigenza specifica e sei in possesso dei sorgenti, allora puoi "glissare" in questo modo.

Dovrai spostare il campo che modifichi ogni volta che viene rilasciato un aggiornamento della libreria, però... :bhò:

mondobimbi
04-08-2007, 09:39
si, ho fatto come hai suggerito.
Che tu sappia esiste in Delphi una classe equivalente che genere un file PostScript utilizzando un derivato di TCanvas ?
ciao
sergio

alka
04-08-2007, 19:00
Originariamente inviato da mondobimbi
Che tu sappia esiste in Delphi una classe equivalente che genere un file PostScript utilizzando un derivato di TCanvas?
Non ne conosco, purtroppo. In genere, quando devo produrre un file PDF o PostScript, sfrutto le funzionalità messe a disposizione dai tool di reporting standard, come RAVE Reports, ad esempio. :bhò:

Loading