[ mehanizamm @ 06.01.2009. 10:51 ] @
Imam formu Form1 i klikom na dugme otvara se Form2.
Kako sad promenljive koje imam u Form1 da koristim u Form2 a kad zatvorim Form2 da te promenljive zadrze vrednosti koje su dobile u Form2. Tj kako da formiram globalne promenljive??
[ mr.zhile @ 06.01.2009. 11:53 ] @

Mozda ima neko drugo resenje ,ali ja sam koristio fazon da promenljive pises u delu ispod dela klase TForm1
npr:
Form1=class(Form1)
...
...
...
public
...
end;


pa ovde pises promenljive...

S tim da OBAVEZNO ti u usess unita form2 mora biti unit form1,a i unit forme u unitu form1,pazi ima slucajeva kad bude greska zbog toga...
[ schild @ 06.01.2009. 12:22 ] @
Mozes napraviti jedan unit, recimo UGlobalVars, i u njemu definisati sve globalne koje ti trebaju, pa taj unit dodati na svaku formu gde zelis pristup globalnim promenjivama/konstantama.
Code:
unit UGlobalVars;
interface
uses ...;
const
  ...
var
  ...
implementation
end.
[ savkic @ 06.01.2009. 12:35 ] @
> Kako sad promenljive koje imam u Form1 da koristim u Form2 a kad zatvorim Form2 da te promenljive zadrze vrednosti koje su dobile u Form2.
> Tj kako da formiram globalne promenljive??

Ako su te promenljive vezane za Formu1 (deklarisane u njoj) onda je dovoljno da deklarišeš propertije vezane za njih u public sekciji klase.

Code:

TForm1 = class(TForm)
private
  FNekaPromenljiva: string;
public
  property NekaPromenljiva: string read FNekaPromenljiva write FNekaPromenljiva;
end;


I kada ti treba njena vrednost pišeš: Form1.NekaPromeljiva := 'Proba';

Ako su to promenljive koje utiču na čitav program onda najbolje da ih izmestiš u poseban unit ili u posebnu globalnu klasu.
[ mehanizamm @ 06.01.2009. 14:21 ] @
Citat:

I kada ti treba njena vrednost pišeš: Form1.NekaPromeljiva := 'Proba';


Sta treba da uradim u unit2 da bi mi prepoznao Form1.NekaPromenljiva?
[ savkic @ 06.01.2009. 15:03 ] @
> Sta treba da uradim u unit2 da bi mi prepoznao Form1.NekaPromenljiva?

Da dodaš unit gde je Form1 deklarisana u uses klauzulu. Recimo:

Code:

uses
  Unit1;

[ mehanizamm @ 06.01.2009. 15:17 ] @
Ja to uradio al mi izbaci gresku..

Citat:

unit2.pas(9,27) Fatal: Circular unit reference between Unit2 and Unit1


[ savkic @ 06.01.2009. 15:57 ] @
Premesti referencu u uses klauzulu u implementation sekciji.
[ mehanizamm @ 06.01.2009. 16:33 ] @
Ok.. Hvala resio..
[ mehanizamm @ 06.01.2009. 20:28 ] @
Citat:
schild: Mozes napraviti jedan unit, recimo UGlobalVars, i u njemu definisati sve globalne koje ti trebaju, pa taj unit dodati na svaku formu gde zelis pristup globalnim promenjivama/konstantama.
Code:
unit UGlobalVars;
interface
uses ...;
const
  ...
var
  ...
implementation
end.


Odradio sam i ovu varijantu.. E sad nastaje problem promenljive se pojavljaju svuda al njihove vrednosti ne..
U unit1 id:='1'; ime:='pera' e sad kad ih pozovem u unit2 id, ime: prazne su nemaju vrednost..

unit sa promenljivama unit3 sam stavio u uses unita1 i unita2..Jel treba jos nesto da odradim??
[ schild @ 07.01.2009. 06:08 ] @
Citat:
U unit1 id:='1'; ime:='pera' e sad kad ih pozovem u unit2 id, ime: prazne su nemaju vrednost..

Proveri da nemas slucajno u unit1 deklarisane promenljive id i ime, jer si onda u njih upisao vrednosti...