I got Form1 with some variables and I want to pass it to another Form3 where I’ll use it. So I have two questions.
-
How can I get access to the variable in another form? I suppose it will
be similar tovar newIdList:= Form1.idList -
When var idList get value in
procedure TForm1.Button1Click(Sender: TObject);begin idList:=strtoint(edit1.text); endand I show new form in another can I still get value in
idList?procedure TForm1.Button2Click(Sender: TObject); begin form1.hide; form3.show; end
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
Label5: TLabel;
Edit3: TEdit;
Edit2: TEdit;
Button3: TButton;
Edit4: TEdit;
Button2: TButton;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Label3: TLabel;
Label2: TLabel;
Edit5: TEdit;
Label7: TLabel;
Label6: TLabel;
Button4: TButton;
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Edit1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
idList,imieList,nazwiskoList,adresList: TStringList;
end;
var
Form1: TForm1;
plik:TStringList;
tempPlik:TextFile;
st:string;
linia_klient,linia_video:array[0..20] of string;
id:integer;
implementation
uses Unit3;
{$R *.dfm}
.
.
.
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
Edit1.Text:='Witaj, Podaj ID klienta';
Label1.Caption:='ID Klienta';
idList:=TStringList.Create;
imieList:=TStringList.Create;
nazwiskoList:=TStringList.Create;
adresList:=TStringList.Create;
if (FileExists('idList.txt')=true) then idList.LoadFromFile('idList.txt') else idList.SaveToFile('idList.txt');
if (FileExists('imieList.txt')=true) then imieList.LoadFromFile('imieList.txt') else imieList.SaveToFile('imieList.txt');
if (FileExists('nazwiskoList.txt')=true) then nazwiskoList.LoadFromFile('nazwiskoList.txt') else nazwiskoList.SaveToFile('nazwiskoList.txt');
if (FileExists('adresList.txt')=true) then adresList.LoadFromFile('adresList.txt') else adresList.SaveToFile('adresList.txt');
AssignFile(tempPlik,'video.txt');
Reset(tempPlik);
i:=0;
While Not Eof(tempPlik) do
begin
Readln(tempPlik,linia_video[i]);
inc(i);
end;
CloseFile(tempPlik);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
//Form1.Hide;
Form3.Show;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm3 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
Form3.Hide;
//Form1.Show;
end;
procedure TForm3.FormShow(Sender: TObject);
begin
Label4.Caption:= intToStr(idList.Count);
end;
end.
(I will assume that each form resides in its own unit.) First, you have to make sure that
idListis accessible to other units. For example,will not do, but
is OK. In such case, all you need to do in
Unit2is to addUnit1to its ‘uses list’ (press Alt+F11, or use File/’Use Unit…’, while inUnit2or while editingForm2). Then you can useForm1.idListto access the variable anywhere insideUnit2. (Form1is the global instance variable ofTForm1inUnit1).For example,