Newsgroup: it.comp.lang.delphi
Titolo: indicizzare TEdit.text ?

non ho il sorgente a portata di zampa e probabilmente mi perdo in un
bicchiere d'acqua
ho una form con circa 50 tedit
a seconda di cosa c'è in un tedit devo modificarne un'altro
ho provato con un ciclo for ma senza riuscire nell'impresa
in pratica è possibile ???:
for X := 0 to 50 do;
if teditX.text = 'pippo' then tedit2.text := 'topolino';
attualmente ho una situazione del tipo:
if tedit1.text = 'pippo' then tedittopolino.text := 'topolino';
if tedit2.text = 'pippo' then tedittopolino.text := 'topolino';
...
if tedit50.text = 'pippo' then tedittopolino.text := 'topolino';
da moltiplicare per altre ricerche successive
forse ho fatto qualche errore di "ortografia" ma ho scritto al volo
senza l'aiuto dell'editor di delphi ;)

attualmente ho una situazione del tipo:
Brrr! :)
Una soluzione piů object oriented č far sě che il TEdit "comunichi" le 
sue modifiche e altri si registrino per essere notificati delle 
modifiche.
--- posted by geoForum on 
http://www.delphiedintorni.it

 modifiche.
bello se riuscissi a seguirti ...
scherzo, è solo colpa mia che non ci arrivo (per il momento)
fino ad ora avevo solo pochi TEdit.tex da gestire quindi la soluzione
da "brivido" costava solo qualche copia/incolla e successivo editing
di un numerello ;)
adesso che ho 50 Tedit e circa 10 possibilità di scelta da
individuare ... serve trovare una alternativa :)
ho trovato questo, che forse fa al caso mio:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 1 to 10 do
    TEdit(FindComponent('Edit' + IntToStr(i))).Text := '?';
end;
magari inserendo un secondo ciclo all'interno sulla verifica del testo
comunque questa sera mi studio meglio il tutto e, se ho problemi,
posto parte del codice in modo che mi possiate seguire meglio (forse
devo chiarire meglio prima le mie idee)

Se gestisci l'evento on_change di una tedit puoi modficare tutte le edit che
vuoi.
nell'Edit1.OnChange
Edit2.Text := 'ciao' ;
Edit3.Text := 'saluto' ;
nell'Edit2.OnChange
Edit4.Text := 'ho ricevuto ciaonella edit2' ;
o quello che vuoi.
nell'Edit3.OnChange
Edit6.Text := 'ho ricevuto salutonella edit3' ;
ciao
Mario
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Edit6.Text := 'ho ricevuto salutonella edit3' ;
... ma attenzione: se la TEdit1 (nell'OnChange) varia la TEdit2, la quale,
nel suo OnChange, varia -tra l'altro- la TEdit1, si crea un ciclo infinito
che ti blocca il computer...
NioBi


l'evento OnChange lo uso già su tutti i TEdit per verificarne le
dimensioni complessive
in pratica il tutto serve per editare porzioni, con funzioni
differenti, di una porzione ben definita di un file dati.
esempio giusto per soddisfare eventuali curiosità:
nel file pippo.dat, dall'offset 100 all'offset 929, ci sono
- nome = 4 byte + 4byte
- cognome 20 byte
- indirizzo 40 byte
- telefono 15 byte
il tutto per 10 nominativi
in sequenza però ho:
- nome1 = 4+4 byte
- cognome1 = 10 byte
...
- nome10 = 4+4 byte
- cognome10 = 10 byte
- indirizzo 1= primi 4 byte(del nome e che non coincide con nome1 !!!)
+ 36byte indirizzo
- telefono 1= 15 byte (associato ed in successione all'indirizzo)
...
- indirizzo 10= primi 4 byte(del nome e che non coincide con
nome10 !!!) + 36byte indirizzo
- telefono 10= 15 byte
quindi "leggo" la porzione del file, popolo i TEditNome.text e
TEditCognome.text poi devo associare, in base ai primi4 byte
dell'indirizzo, nei giusti TEditIndirizzo.text  i 36 byte
dell'indirizzo e nei giusti TEditTelefono.text i successivi 15 del
telefono
con OnChange gestisco il totale dei byte in modo che se manca un byte
non posso successivamente riscrivere la porzione del file (il byte in
più non è fattibile avendo gestito il limite massimo di caratteri di
ciascun TEdit, in ogni caso l'IF in più l'ho messo lo stesso :) )
ps. ovviamente la necessità di mantenere costante il numero
complessivo di byte è data da criticità successive nell'utilizzo del
file stesso.
ora che ci penso devo creare delle variabili.stringa e/o dei TEdit
nascosti dato che in fase di scrittura devo comunque inserire i primi
4 byte (del nome) che non serve rendere visibili ma che associano
"indirizzo e telefono" ai rispettivi "nomi e cognomi"
ps. per la scrittura ho già la routine pronta, faccio la somma delle
stringhe (nella giusta sequenza) e la scrivo nel file

ho trovato questo, che forse fa al caso mio:
Ti sconsiglio vivamente di identificare i componenti per "nome" in 
questo modo - non è validato quando compili e se cambi per qualche 
motivo nome non te ne accorgi finché il codice non viene eseguito. È una 
tecnica simil-VB che in Delphi IMHO non vale la pena usare.


 e/o dei TEdit nascosti 
Aaaaaaaaargh!!!!!! :) Se fai una cosa del genere non ti rivolgo pių la 
parola :) Questo č ObjectPascal, non HTML!!!!! Usa le classi, che le 
classi siano con te, sempre!!!!! Non farti tentare dal lato oscuro!


l'unica cosa che riconosco è di essere ignorante (causa il poco
studio) e continuo a non seguirti :)
quando parli di classi cosa intendi ?
gestire il tutto tramite variabili.stringa e poi riordinare e
"popolare" i TEdit in seguito ?
purtroppo (sarò anche masochista) ma stò sia "imparando" come è stato
gestito il file (e quindi come sono inseriti i dati di cui voglio fare
l'editor ... cosa non proprio semplice) sia il linguaggio di
programmazione da utilizzare per l'editor stesso ... nel momento in
cui mi si pongono problemi a cui dare soluzione ...
sdrammatizzo ... ho tre monitor attaccati al PC, in uno il delphi, in
uno l'hex editor e nell'altro alterno vari help e/o scrivo a futura
memoria (ne ho poca)
... anche se neanche io la ammetto come scusa ... questo per me, per
fortuna o purtroppo, è solo hobby ;)

 quando parli di classi cosa intendi ?
Andiamo bene :)
Quello che Stefano vuole dirti č di usare le classi (informati su cosa
siano, č anacronistico ormai non saperlo) che facciano da controller per
le varie visualizzazioni. Esiste un modello ormai acclarato che č MVC
(Model-View-Controller), usando il quale raramente ci si pente.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

l'unica cosa che riconosco è di essere ignorante (causa il poco
studio) e continuo a non seguirti :)
quando parli di classi cosa intendi ?


"popolare" i TEdit in seguito ?
Quasi. Intendo creare una serie di routine (incapsulate in una classe) 
che leggano e scrivano sul file. I TEdit poi utilizzerano queste routine 
per visualizzare e modificare i dati. Però tutta la logica di lettura e 
scrittura dei dati è nella classe, non nel codice del form che lega i 
TEdit.
Sì può fare anche senze classi (una semplice serie di routine), ma 
comunque è molto meglio separare la logica che manipola il file da 
quella dell'interfaccia utente.
Ad esempio la struttura del tuo file mi pare facilmente mappabile su 
opportuno tipo record, che semplificherebbe di gran lunga l'accesso:
Se non sai cos'è una classe, e non le hai mai usate, ti consiglierei di 
trovare un buon testo sulla programmazione object-oriented, meglio se 
direttamente in object pascal, e approfondire, perché:
1) Il codice diventa più "semplice", ordinato e manutenibili
2) Senza classi usi Delphi al 10% delle sue possibilità, e forse anche 
meno.
