Newsgroup: it.comp.lang.delphi
Titolo: Inconvenienti per un componente modificato

Ho modificato un componente cambiando il nome di una sua proprietà e ho 
pertanto ricompilato e reinstallato il package che lo contiene. Ma mi 
succede che nelle unit dove il componente è usato permane la vecchia 
proprietà e l'unico modo che ho trovato per ricompilarle senza errori è 
cancellare il componente nei form dove era usato e rimetterlo di nuovo. In 
questo modo acquisisce la nuova property. Il componente è un edit e ho un 
form dove, a colonne, ce ne sono un grosso numero. Sostituirli tutti, 
incolonnarli etc è un bel pò di lavoro. Ma è normale o c'è qualcosa che 
sbaglio ? 
 
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
http://www.avast.com
 
 

 cancellare il componente nei form dove era usato e rimetterlo di nuovo. [...]
 
Hai modificato il tipo della proprietà senza alterarne il nome?
Prova a fornire la dichiarazione della classe, con il "prima" e il "dopo" (tipo diete dimagranti :D) così possiamo approfondire.
 
Ciao,
  Marco.
 
-- 
MARCO BREVEGLIERI (Software and Web Developer)
#Home: 
http://www.marco.breveglieri.name
 
#Blog: 
http://www.compilaquindiva.com
 
#Podcast: 
http://www.delphipodcast.com
 

Hai modificato il tipo della proprietà senza alterarne il nome?
Prova a fornire la dichiarazione della classe, con il "prima" e il "dopo" 
(tipo diete dimagranti :D) così possiamo approfondire.
Ciao,
  Marco.
-- 
Il nome del componente è rimasto lo stesso. Una property il cui scopo era di 
colorare l'area dell'edit al On Enter l'ho modificata nel nome e nelle 
istruzioni. Una property del tutto secondaria. Ho ricompilato e provato il 
componente in un form di prova; tutto funzionava e quindi ho cancellato .dcu 
e anche il .bpl del package, ricompilato e reinstallato nella palette.
Ho anche ricompilato l'applicazione dove il componente è usato perchè avevo 
apportato altre modifiche e tutto bene, ma in fase di esecuzione, nei form 
dove il componente è usato esce un messaggio "ErrorReading 
Edit1.ColoreNormale: property ColoreNormale does not exist" che impedisce di 
accedere al form.
Nel form ho rimosso e di nuovo rimesso il componente (edit), ed è tutto ok. 
Non è cambiato il nome della unit, che è dichiarata con il suo nome negli 
uses, nè ho modificato le varie istanze del componente (edit1: TFullEdit; 
... edit2: TFullEdit ...) 


 accedere al form. [...]
 
Questo errore è normale: il DFM del Form in cui hai usato il componente contiene il valore da assegnare alla proprietà che hai rimosso, quindi Delphi segnala il problema quando tenta di farlo a runtime.
 
E' sufficiente aprire il Form nel progetto per ottenere la segnalazione dell'errore, ma anche la rimozione della property che non esiste più, risolvendo così anche il problema a runtime.
 
Se i Form sono troppi, fai una ricerca estesa del nome della proprietà nei DFM di tutto il progetto, senza aprire il Form a designtime, e cancella a mano il riferimento a quella proprietà; infine, compila di nuovo il progetto e vedrai che sparisce.
 
Se la property figura ovunque sebbene tu non ne abbia impostato il valore, usa la direttiva *default* sulla proprietà per informare Delphi del valore predefinito della proprietà (che dovrai impostare nel costruttore), così che Delphi eviti di salvarlo se non viene modificato da te o da altri sviluppatori quando viene usato in un Form.
