Newsgroup: it.comp.lang.delphi
Titolo: Ricombinare l'array dei componenti...

Salve a tutti, ho un piccolo problema con questa procedura...
   for i:=0 to componentcount-1 do
       memo1.lines.add(inttostr(i)+components[i].name);
mi da il numero indice dell'array dei componenti sulla form ed il nome.
Questo indice va in base alla creazione esmpio metto un bottone sulla form 
quello è il primo elemento... La domanda che vi chiedo è la seguente posso 
ricombinare l'array e mettere gli elementi nell'ordine che voglio? Se 
ricreassi la form mi basterebbe mettere in ordine di creazione gli elementi. 
Ma ho già creato la form e non ho seguito un ordine...
Come si fa adesso ad ordinare il tutto?
Ho provato con tab order ma l'ordine rimane sempre in base alla data di 
creazione...
Adesso sto risolvendo il problema in questo modo....
avendo molti componenti su una form divisi da un PageControl, più che altro 
i miei componenti sono disposti in ordine...
esempio
combobox1 edit1 edit2 tag 101 a tutti e 3
combobox2 edit3 edit4 tag 102 a tutti e 3
.
.
.
combobox19 edit38 edit39 tag 119 a tutti e 3
La mia applicazione cattura onchange dell'edit1 ed il select del combobox1 
faccio un controllo su tutti i componenti poi dal tag e dal nome del 
componente vado fare delle determinate operazioni sui controlli vicini.. ad 
esempio sull'edit1 faccio un controllo sul combobox1 e magari sull'edit2. 
Per non scrivere migliaia di riga di codice lo faccio in maniera astratta 
usando l'array dei componenti della serie...
for i:=0 to componentcount -1 do
if components[i] is tcombobox then
if tcombobox(components[i]).tag= tedit(sender).tag then
//fai qualcosa
Praticamente vorrei evitare di fare tutto questo nel mio evento ma vorrei 
far andare avanti ed indietro il valore di I. 

 combobox19 edit38 edit39 tag 119 a tutti e 3
A questo punto, se fai un uso cosi' complesso e laborioso
di diversi componenti, ripetuto piu' volte nel programma, 
prendi in considerazione l'opportunità di creare un componente
ad-hoc che implementi in se' la logica di controllo di cui 
hai bisogno.
Ciao
ACSH
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 creazione...
Non ne sono sicuro ma forse l'ordine lo puoi modificare in questo modo: 
sulla form clicca col destro e seleziona "View as text". da li' puoi fare 
taglia incolla dei vari componenti della form..
Giorgio 

 ricombinare l'array e mettere gli elementi nell'ordine che voglio? 
Non ho ben capito se ciò che vuoi riordinare sono i componenti e il loro 
ordine di creazione vero e proprio, oppure l'elenco informativo che hai 
ottenuto e memorizzato nel controllo *TMemo*.
Nel secondo caso, potresti usare comodamente una classe o un record per 
immagazzinare i suddetti valori, memorizzandolo l'oggetto o lo stesso 
record in una lista per ordinarli successivamente.
Se si tratta del primo caso, dovresti rivedere il tuo codice poiché, in 
generale, non è bene prescindere dall'ordine di creazione dei componenti 
(scrivi se ti serve poi aiuto in questo contesto per modificare il 
codice in modo da evitare, appunto, questa "dipendenza").
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
]

 Come si fa adesso ad ordinare il tutto?
Lavorando sul dfm, ma è un lavoraccio.
In alternativa puoi caricare gli elementi in una TObjectList parallela e
sistemarli.


 sistemarli.
Grazie per l'aiuto proverò con la seconda....e poi magari lavorare con la 
objectlist
anche se non ci ho tanta confidenza con quest'ultima...