Newsgroup: it.comp.lang.delphi
Titolo: Dati da un form all'altro

Ho un form che, in alcune circostanze pu� creare un secondo form. Vorrei 
avere disponobili nel secondo form alcuni dati del primo (un array di 
stringhe, una variabile string).
Da qualche parte ho trovato, per la variabile string, il consiglio di creare 
nel secondo form una property. Non ha ancora capito bene, ma comunque non mi 
risolverebbe il problema dell'array; per cui chiedo a chi m i pu� dare un 
consiglia, che soluzione c'� al problema.
I suddetti dati verrebbero solo usati dal secondo form e non modificati. 
Come si pu� fare ? 

 risolverebbe il problema dell'array; 
TStringList
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Vediamo se ho capito bene. Nel primo form dovrei:
- creare il secondo form
- lanciare una procedure con dei parametri (che rappresentano i dati che mi 
servono)
- non usare array, ma usare TStringList (puoi spiegare meglio perch�?)
E' cos� ? Grazie
"Andrea Laforgia" <x...@xx.xx> ha scritto nel messaggio 
news:hdoubd$v2g$1...@news.newsland.it...


Intanto ti mostro cosa ho provato per la var string.
Nel Form2 (cio� il form chiamato):
  private
    { Private declarations }
    fDbName: string;
  public
    { Public declarations }
    property DbName: string read fDbName write fDbName;
Nel Form1 (cio� il chiamante):
  Form2 := TForm2.Create(Self);
  try
    Form2.DbName:= 'C:\Data\...';
    Form2.ShowModal;
  finally
    Form2.Free;
  end;
Ho trovato un suggerimento da qualche parte. Mi pare che funzioni, il che 
non vuol dire che va bene .. e comunque non saprei come fare per l'array...
Cosa ne dici ?
"Andrea Laforgia" <x...@xx.xx> ha scritto nel messaggio 
news:hdoubd$v2g$1...@news.newsland.it...


 - non usare array, ma usare TStringList (puoi spiegare meglio perch�?)
La TStringList (derivata dall'astratta TStrings) � una classe che consente
di memorizzare dinamicamente stringhe, accedervi tramite indice
(esattamente come faresti per un array) memorizzare coppie nome/valore,
decomporre automaticamente una stringa con delimitatori, ordinare,
cercare, ecc.. Fornisce, in buona sostanza, una serie di "facilities" che
rendono molto conveniente il suo uso.
Non usare le property nella form secondaria, ma usa un metodo Execute a
cui passerai i parametri richiesti (stringa, stringlist e quant'altro
necessario).


   end;
Form2:
private:
  FPath: String;
  FStrings: TStrings;
public
  function Execute( APath: String; AStrings: TStrings ): TModalResult;
...
function Execute( APath: String; AStrings: TStrings ): TModalResult
begin
  FPath := APath;
  FStrings := AStrings;
  Result := ShowModal;
end;


Ora ho capito. Grazie
"Andrea Laforgia" <x...@xx.xx> ha scritto nel messaggio 
news:hdq4en$69o$1...@news.newsland.it...


ma se nella form2 dichiari un array e una stringa e li riempi quando
visualizzi la form2 non è tutto più semplice ??? il fatto di
modificare i valori dell'array e della tua stringa dipende solo da te
in base a come li vuoi gestire, cioè vale a dire che se i dati non
vengono gestitti a video come pensi che l'utente possa modificarli ???

 visualizzi la form2 non � tutto pi� semplice ??? 
Lui vuole passarli dall'esterno. E poi, no, non sarebbe tutto pi� semplice.


 ha scritto nel messaggio 
news:4a235b9c-e4f8-40ec...@p8g2000yqb.googlegroups.com...
ma se nella form2 dichiari un array e una stringa e li riempi quando
visualizzi la form2 non � tutto pi� semplice ??? il fatto di
modificare i valori dell'array e della tua stringa dipende solo da te
in base a come li vuoi gestire, cio� vale a dire che se i dati non


 ha scelto).
MAI usare variabili globali. Consideralo il male assoluto. Ed evita anche
i Singleton. Se hai bisogno di svolgere un compito del genere, ti conviene
affidarti alla "dependency injection", cio� costruisci una classe
TConfiguration con una propriet� DataPath (o roba del genere) e ne passi
un'istanza a chiunque ne abbia bisogno.
