Newsgroup: it.comp.lang.delphi
Titolo: Ridurre il numero delle variabili ESTERNE

Ciao a tutti, 
Supponiamo di voler usare un componente TreeView e di volervi associare un
controllo boolean.
La prima strada è definire una variabile esterna. Con il rischo di avere
troppe variabili esterne che rendono difficile la lettura del programma.
La seconda strada è quella di settare Hint come campo vuoto e di usare la
variabile showHint come controllo.
Es. TreeView1.ShowHint:=true; .... if TreeView1.ShowHint=false then ...
La mia domanda è... Perchè nelle PROPRIETA' di un componente Borland non
offre delle variabili di controllo. Questo potrebbe ridurre l'utilizzo
della variabili esterne. Es. TreeView1.CBoolean; TreeView1.String;
TreeView1.Integer1, TreeView1.Integer2, TreeView1.Integer3
Basterebbero queste... 
Il fatto è che i componenti Borland non sono ancora maturi e ribadisco
troppo complessi, infatti dovrebbero avere 2 strati. Uno di alto livello
visuale e l'altro più legato al codice. La filosofia Delphi è invece
quella di ridurre la ridondanza.... Ma a scapito della semplicità...
--- posted by geoForum on 
http://www.delphiedintorni.it

 TreeView1.Integer1, TreeView1.Integer2, TreeView1.Integer3
Hai mai sentito parlare di ereditarieta'? Ti crei il tuo bel componente
TMioTreeView che espone queste proprieta' e le utilizzi come meglio ti 
aggrada
(ma se hai bisogno di tutti questi controlli, IMHO sbagli qualcosa nella
progettazione della tua applicazione).
L'ultima frase del post facciamo finta che non sia stata scritta ...
non aggiungendo nulla alla tua richiesta.
Ciao
-- 
ACSH
[TurboDelphi]
Chi fa da se', fatica il doppio 

Non parlavo del fastidioso codice per gestire l'ereditarietà, ma di
semplici controlli snatch per gli oggetti, almeno un controllo boolean e
un contatore.
Credo d'altra parte che la seconda parte del post sia più che mai corretta
e condivisa da molti. Altrimenti non ci sarebbe il fiorire di tutti questi
componenti per risolvere ASPETTI BANALI. Es. Colorare la cella di una
stringgrid con una istruzione del tipo
StringGrid1.Cells[x,y].Color:=clRed. Totalmente assente. 
Noto che gran parte del codice scritto in Delphi serve per gestire i
componenti stessi.
Supponiamo ancora di voler aggiungere un'immagine a una cella della
StringGrid1. Mi aspetterei un comando del tipo
StringGrid1.Cells[x,y].AddImage=bmp1;  Anche qui de nada....
Chi difende gli interessi altrui finisce per esserne vittima...
buona serata e grazie per la risposta :-)
Matteo


Non parlavo del fastidioso codice per gestire l'ereditarietà, ma di
semplici controlli snatch per gli oggetti, almeno un controllo boolean e
un contatore.
TreeView1.Status:=true;
TreeView1.CountSet:=10;
Credo d'altra parte che la seconda parte del post sia più che mai corretta
e condivisa da molti. Altrimenti non ci sarebbe il fiorire di tutti questi
componenti per risolvere ASPETTI BANALI. Es. Colorare la cella di una
stringgrid con una istruzione del tipo
StringGrid1.Cells[x,y].Color:=clRed. Totalmente assente. 
Noto che gran parte del codice scritto in Delphi serve per gestire i
componenti stessi.
Supponiamo ancora di voler aggiungere un'immagine a una cella della
StringGrid1. Mi aspetterei un comando del tipo
StringGrid1.Cells[x,y].AddImage=bmp1;  Anche qui de nada....
Chi difende gli interessi altrui finisce per esserne vittima...
buona serata e grazie per la risposta :-)
Matteo
--- posted by geoForum on 
http://www.delphiedintorni.it

 troppo complessi, infatti dovrebbero avere 2 strati. [...]
Secondo me hai preso un grosso abbaglio e stai spacciando per immaturi 
controlli che hanno 10 anni di esperienza alle spalle (benché non privi 
di difetti) basandoti sul fatto che non funzionano nel modo - ovviamente 
errato - che prevedi tu.
Non ha senso richiedere la presenza di proprietà "a caso", con un 
miscuglio di tipi predefiniti e numerati progressivamente...
In riferimento specifico ad un controllo *TTreeView*, ciascun 
*TTreeNode* è bene che abbia solamente il minimo delle proprietà 
necessarie per sopravvivere. Per agganciare a ciascun nodo informazioni 
aggiuntive, il passo è breve: basta creare una classe discendente di 
*TTreeNode* e indicare al controllo TreeView di creare un oggetto 
appartenente a tale classe quando un nodo viene aggiunto alla struttura 
(vedere evento "OnCreateNodeClass"), provvedendo poi ad immagazzinare 
nell'oggetto tutte le proprietà che si desiderano, e solo quelle proprietà.
Prima di inveire sui controlli VCL per l'assenza di elementi inutili, 
fai una ricerca per verificare che non esista una soluzione apposita al 
tuo problema. :-)
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)
     Non hai la possibilità di scaricare Turbo Delphi Explorer?
     Te lo spedisco io!! [
http://www.marco.breveglieri.name/?p=48
]

 Chi difende gli interessi altrui finisce per esserne vittima...
Ma di quali interessi stai parlando?


 quella di ridurre la ridondanza.... Ma a scapito della semplicità...
piu' che altro manca una guida in linea fatta bene e magari qualche 
esempio annesso e connesso.
purtroppo capita di trovare cose del tipo:
property pippo : boolean;
Esempio:
begin
   oggetto.pippo := true;
end;
Ma che esempio del menga e'? Spero migliori col passare del tempo
-- 
-------------------------------
per scrivere in privato
togliere "1975nosp"
to reply remove "1975nosp"

 StringGrid1.Cells[x,y].AddImage=bmp1;  Anche qui de nada....
credo che i componenti della VCL siano stati lasciati volutamente semplici 
in modo da permettere a chiunque di estenderli come più gli aggrada (vedi 
le decine di librerie di componenti che si trovano in giro, a cominciare da 
JEDI)
-- 
Mauro Falzari
"Chi sarà ricorso a un veleno per pensare,
ben presto non potrà più pensare senza veleno".
  (Charles Baudelaire, in "Le poëme du haschish", Parigi 1980)