Newsgroup: it.comp.lang.delphi
Titolo: spostarsi tra gli oggetti

Ciao a tutti,
ho disegnato 3 linee con Shape, cioč tre oggetti (Shape1, Shape2, Shape3)
ora vorrei fare un ciclo for next e passare su ognuno degli oggetti per
cambiarli una proprietą.
Come faccio ad indicare nel ciclo for quell'oggetto automaticamente cioč
Shape1 e poi Shape2 e poi Shape3 ?
Grazie


potresti utilizzare una cosa simile
for i:=0 to components.count-1 do
begin
    if components[i] is TShape then ...ecc.. ecc..
end;
oppure
for i:=1 to 3 do
begin
    TShape(findcomponent('Shape'+inttostr(i))).miaprop :=....
end;
Denis

 Shape1 e poi Shape2 e poi Shape3 ?
[una via un pò più lunga ma ...]
ciò che ti ha detto Denis è più che corretto ma mi permetto di portare alla
tua attenzione
anche un'altra via, certamente più dispendiosa, ma ha i suoi vantaggi.
Potresti mettere, all'atto della creazione ognuno di questi oggetti Shape
in una TList e poi quando ti serve uno o più di uno di questi oggetti Shape
puoi trovare tutto nella lista.
il codice è praticamente uguale a quello già postato ma ora il ciclo lo fai
in
in una lista in cui sai che ci sono solo le cose che ti servono.
For I := 0 To MiaShapeList.Count-1 Do
  TShape(MiaShapeList[I]).Prop := ????;
ovviamente non cambia nulla nel codice ...
ammeno che nel ciclo sui component o sui control se non becchi il componente
giusto
sei costretto a ciclare sui componenti di mezzo form ...
e se poi tu ciclavi sui componenti di un determinato panel e le shape le
sposti
in un'altra form con altri componenti ... ?!
ritengo più opportuno , ovviamente imho, avere una lista con tutti gli
oggetti che mi servono
poi se devo spostare le shape, non cambia nulla ... tutto questo non dipende
da dove
le shape sono ma da che Pointer hanno.
Poi, in futuro, la lista potrebbe diventare, non una semplice TList, ma
eredita da TList che accetti solo
oggetti di tipo Shape e ritorni solo oggetti di tipo shape e tante altre
utilità che mi fanno pensare che per
il futuro è meglio una lista che un ciclo su qualcosa di "poco sicuro"
ovviamente tutto ciò deve essere pesato da
TEMPO,VOGLIA,CLIENTE,DENARO ;)
  ciao
  Mak

Sinceramente io utilizzo il tuo metodo, non una lista perchè non risponde in
pieno alle mie esigenze, ma una clkasse TObjectHash con coppie chiavi
(stringhe) e valore (oggetti), però ovviamente bisogna fare molta attenzione
alla sincronizzazione tra la lista e i componenti reali, specie se come nel
mio caso bisogna crearli a run-time...
allora, per semplicità, avevo proposto quelle soluzioni che con un minimo di
RTTI sono implementabili, basterebbe trappare eventuali errori di casting e
più o meno ci siamo.
Unico difetto? Secondo me la velocità in quanto devi scorrere tutti i
componenti della form (a volte non pochi) mentre con una lista è
rapidissima... ovviamente gestendola bene altrimenti errori di AV a
quintali...
Se ci sono altre soluzioni be' sono dispostissimo a imparare...
Denis

ciao Denis
non volevo assolutamente, ne sconsigliare vivamente, ne criticare il tuo
metodo
in quanto a volte capita proprio che scorrere i controlli ti salvi in molte
situazioni.
portavo solo altre possibili soluzioni con motivazioni giustificabili
(spero).
la tua TObjectHash, ovviamente è un'altra soluzione che può essere presa in
considerazione :)
  ciao
  Mak

Guarda... a volte (anzi spesso) le critiche fanno bene, uno dei difetti di
chi programma è spesso di innamorarsi del metodo seguito e una doccia fredda
fa bene eheheh....
Solo che speravo che esistesse una via più semplice ma a quanto pare non ci
siamo.
Uffa, sarà per la prossima volta ==> vita difficile quella del
programmartore...
Denis

programmartore...
pienamente daccordo ;)

 mi assicurano che cio che vado a prendere e ciò che vado ad inserire
