Watch, Follow, &
Connect with Us

For forums, blogs and more please visit our
Developer Tools Community.


Welcome, Guest
Guest Settings
Help

Thread: Passing value to another form


This question is answered. Helpful answers available: 2. Correct answers available: 1.


Permlink Replies: 7 - Last Post: Jan 27, 2017 1:31 AM Last Post By: Matija Murn Threads: [ Previous | Next ]
Matija Murn

Posts: 16
Registered: 12/16/07
Passing value to another form  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 16, 2017 2:48 PM
Hello
I am new at oop and I have one question about sharing the variables across forms.
Lets say I have main form from which I create another form. In this form I create TUser = class where I have two variables fName and fLastName.
In this second form i assign some name to this two variables.
How can I read this two variables in first form? I could use global variable, but I read that is not a good idea.
Thank you and regards,
Matija
Lajos Juhasz

Posts: 801
Registered: 3/14/14
Re: Passing value to another form  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 16, 2017 10:46 PM   in response to: Matija Murn in response to: Matija Murn
Matija Murn wrote:

Hello
I am new at oop and I have one question about sharing the variables
across forms. Lets say I have main form from which I create another
form. In this form I create TUser = class where I have two variables
fName and fLastName. In this second form i assign some name to this
two variables. How can I read this two variables in first form? I
could use global variable, but I read that is not a good idea. Thank
you and regards, Matija

Make those two variables a public property or field on the second form,
then you can access them from the first form.
Matija Murn

Posts: 16
Registered: 12/16/07
Re: Passing value to another form  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 23, 2017 4:46 AM   in response to: Lajos Juhasz in response to: Lajos Juhasz
Hello
Sorry for my late answer, but I read again OOP section of Marco Cantu ObjectPascalHandBook, reading other post on forums and make a lot of test.
This come up and I would like to know if I am on a right track for proper data sharing across forms that applies with opp rules.

To separate data from UI I made unit uNames. It has one class TNames with three variables.
unit uNames;
 
interface
 
type
  TNames = class
  private
    fID : integer;
    fName : string;
    fLastName : string;
 
    procedure SetID(const Value: integer);
    procedure SetLastName(const Value: string);
    procedure SetName(const Value: string);
  public
    property ID : integer read fID write SetID;
    property Name : string read fName write SetName;
    property LastName : string read fLastName write SetLastName;
  end;
 
implementation
 
{ TNames }
 
procedure TNames.SetID(const Value: integer);
begin
  fID := Value;
end;
 
procedure TNames.SetName(const Value: string);
begin
  fName := Value;
end;
 
procedure TNames.SetLastName(const Value: string);
begin
  fLastName := Value;
end;
 
end.

Next is main form to represent the data (3 labels) and two buttons to open form Uni2 and Unit3.
unit Unit1;
 
interface
 
uses
  uNames, Unit3,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TfrmMain = class(TForm)
    lblID: TLabel;
    lblName: TLabel;
    lblLastName: TLabel;
    Unit2: TButton;
    Unit3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Unit2Click(Sender: TObject);
    procedure Unit3Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    Names : TNames;
    frmNames : TfrmEditNames;  //declaration of Unit3
    frmNamesA : TfrmEditNames;
    function GetID: Integer;
    function GetLastName: string;
    function GetFName: string;
    procedure SetID(const Value: Integer);
    procedure SetLastName(const Value: string);
    procedure SetFName(const Value: string);
    procedure ShowValues;
  public
    property ID : integer read GetID write SetID;
    property Name : string read GetFName write SetFName;
    property LastName : string read GetLastName write SetLastName;
  end;
 
var
  frmMain: TfrmMain;
 
implementation
 
uses Unit2;
 
{$R *.dfm}
 
procedure TfrmMain.FormCreate(Sender: TObject);
begin
  Names := TNames.Create; //Creation of class from unit uNames
  Names.ID := 0;
  Names.Name := 'John';
  Names.LastName := 'Doe';
end;
 
procedure TfrmMain.Unit2Click(Sender: TObject); //Open a form waiting for a modal result
var
  frmID: TfrmIDinsert;
begin
  frmID := TfrmIDinsert.Create(Self, ID); //Creating a form with passing the ID parameter
  frmID.Names := Names; //Copy class data to a new class in unit2
 
  try
    if frmID.ShowModal = mrOK then
    begin
     Names := frmID.Names; //Copy back class data from Unit2
     ShowValues;
    end;
  finally
    frmIDinsert.Free;
  end;
end;
 
procedure TfrmMain.Unit3Click(Sender: TObject); //Open a form
begin
  frmNames := TfrmEditNames.Create(Self, Names); //Creating a form with passing the class parameter
  frmNames.Show;
end;
 
procedure TfrmMain.ShowValues;
begin
  ID := Names.ID; //Write to Label component through property
  Name := Names.Name;
  LastName := Names.LastName;
end;
 
procedure TfrmMain.FormActivate(Sender: TObject);
begin
  if frmNames <> nil then
  begin
    Names := frmNames.Names; //Copy back class data from Unit3
    if frmNames.ModalResult = mrClose then
    begin
      frmNames.ModalResult := 0;
      frmNames.Close;
    end;
  end;
 
  ShowValues;
end;
 
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(frmNames) then
    frmNames.Free;
end;
 
function TfrmMain.GetID: Integer;
begin
  Result := StrToInt(lblID.Caption);
end;
 
procedure TfrmMain.SetID(const Value: Integer);
begin
  lblID.Caption := Value.ToString;
end;
 
function TfrmMain.GetFName: string;
begin
  Result := lblName.Caption;
end;
 
procedure TfrmMain.SetFName(const Value: string);
begin
  lblName.Caption := Value;
end;
 
function TfrmMain.GetLastName: string;
begin
  Result := lblLastName.Caption;
end;
 
procedure TfrmMain.SetLastName(const Value: string);
begin
  lblLastName.Caption := Value;
end;
 
end.

On button Unit2Click I create instance of Unit2. I also pass one variable as parameter. Next I copy class data from Unit2 to class in Unit2.
In Unit2 a show and modify ID variable.
Here I also wait for form to be close, to read inserted data. The form Unit2 will stay on top, so it is good for some type of data insertion.
unit Unit2;
 
interface
 
uses
  uNames,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TfrmIDinsert = class(TForm)
    OK: TButton;
    Cancel: TButton;
    edtID: TEdit;
    Label1: TLabel;
    procedure OKClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    fNames : TNames;
    function GetID: integer;
    procedure SetID(const Value: integer);
  public
    constructor Create(AOwner: TComponent; aID : Integer); reintroduce;  //overload
    property Names : TNames read fNames write fNames;
    property ID : integer read GetID write SetID;
  end;
 
var
  frmIDinsert: TfrmIDinsert;
 
implementation
 
{$R *.dfm}
 
constructor TfrmIDinsert.Create(AOwner: TComponent; aID : Integer);
begin
  inherited Create(AOwner);
  Names := TNames.Create;
  ID := aID;
end;
 
procedure TfrmIDinsert.FormActivate(Sender: TObject);
begin
  edtID.SetFocus;
end;
 
procedure TfrmIDinsert.OKClick(Sender: TObject);
begin
  Names.ID := ID;
end;
 
function TfrmIDinsert.GetID: integer;
begin
  Result := StrToInt(edtID.Text);
end;
 
procedure TfrmIDinsert.SetID(const Value: integer);
begin
  edtID.Text := Value.ToString;
end;
 
end.

On button Unit3Click I create instance of Unit3 and pass complete class Names as parameter.
In Unit3 a show ID variable and varibles Name and LastName can be also modifyed.
Here I can open multiple instances of Unit3. Refreshing of data in done FormActivate.
unit Unit3;
 
interface
 
uses
  uNames,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TfrmEditNames = class(TForm)
    lblID: TLabel;
    edtName: TEdit;
    edtLastName: TEdit;
    Save: TButton;
    Cancel: TButton;
    Refresh: TButton;
    SaveClose: TButton;
    procedure CancelClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure SaveClick(Sender: TObject);
  private
    fNames : TNames;
    function GetLastName: string;
    function GetFName: string;
    procedure SetID(const Value: integer);
    procedure SetLastName(const Value: string);
    procedure SetFName(const Value: string);
    procedure ShowValues;
  public
    constructor Create(AOwner: TComponent; aNames: TNames); reintroduce;
    property Names : TNames read fNames write fNames;
    property ID : integer  write SetID;  // read GetID ; not needed, it is a label
    property Name : string read GetFName write SetFName;
    property LastName : string read GetLastName write SetLastName;
  end;
 
var
  frmEditNames: TfrmEditNames;
 
implementation
 
{$R *.dfm}
 
constructor TfrmEditNames.Create(AOwner: TComponent; aNames: TNames);
begin
  inherited Create(AOwner);
  Names := TNames.Create; //Creating unit3 class
  Names := aNames; //Copy class data to a Unit3 class
end;
 
procedure TfrmEditNames.CancelClick(Sender: TObject);
begin
  Close;
end;
 
procedure TfrmEditNames.FormActivate(Sender: TObject);
begin
  ShowValues;
end;
 
procedure TfrmEditNames.SaveClick(Sender: TObject); //Save values into unit3 class
begin
  Names.Name := Name;
  Names.LastName := LastName;
end;
 
procedure TfrmEditNames.ShowValues;
begin
  ID := Names.ID; //Write to Label component through  property
  Name := Names.Name;
  LastName := Names.LastName;
end;
 
procedure TfrmEditNames.SetID(const Value: integer);
begin
  lblID.Caption := Value.ToString;
end;
 
function TfrmEditNames.GetFName: string;
begin
  Result := edtName.Text;
end;
 
procedure TfrmEditNames.SetFName(const Value: string);
begin
  edtName.Text := Value;
end;
 
function TfrmEditNames.GetLastName: string;
begin
  Result := edtLastName.Text;
end;
 
procedure TfrmEditNames.SetLastName(const Value: string);
begin
  edtLastName.Text := Value;
end;
 
end.

I am not sure about the code in Unit1 - frmMain - Form Activate
procedure TfrmMain.FormActivate(Sender: TObject);
begin
  if frmNames <> nil then
  begin
    Names := frmNames.Names; //Copy back class data from Unit3
    if frmNames.ModalResult = mrClose then
    begin
      frmNames.ModalResult := 0;
      frmNames.Close;
    end;
  end;
 
  ShowValues;
end;

Is this proper way to return data back to Unit1? After closing frmNames it looks like that frmNames is still not nil.

regards,
Matija

Edited by: Matija Murn on Jan 23, 2017 1:47 PM
Lajos Juhasz

Posts: 801
Registered: 3/14/14
Re: Passing value to another form [Edit]  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 23, 2017 6:48 AM   in response to: Matija Murn in response to: Matija Murn
Matija Murn wrote:

Hello
Sorry for my late answer, but I read again OOP section of Marco Cantu
ObjectPascalHandBook, reading other post on forums and make a lot of
test. This come up and I would like to know if I am on a right track
for proper data sharing across forms that applies with opp rules.

To separate data from UI I made unit uNames. It has one class TNames
with three variables.
unit uNames;
 
interface
 
type
  TNames = class
  private
    fID : integer;
    fName : string;
    fLastName : string;
 
    procedure SetID(const Value: integer);
    procedure SetLastName(const Value: string);
    procedure SetName(const Value: string);
  public
    property ID : integer read fID write SetID;
    property Name : string read fName write SetName;
    property LastName : string read fLastName write SetLastName;
  end;
 
implementation
 
{ TNames }
 
procedure TNames.SetID(const Value: integer);
begin
  fID := Value;
end;
 
procedure TNames.SetName(const Value: string);
begin
  fName := Value;
end;
 
procedure TNames.SetLastName(const Value: string);
begin
  fLastName := Value;
end;
 
end.

Next is main form to represent the data (3 labels) and two buttons to
open form Uni2 and Unit3.
unit Unit1;
 
interface
 
uses
  uNames, Unit3,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,   Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls;
 
type
  TfrmMain = class(TForm)
    lblID: TLabel;
    lblName: TLabel;
    lblLastName: TLabel;
    Unit2: TButton;
    Unit3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Unit2Click(Sender: TObject);
    procedure Unit3Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    Names : TNames;
    frmNames : TfrmEditNames;  //declaration of Unit3
    frmNamesA : TfrmEditNames;
    function GetID: Integer;
    function GetLastName: string;
    function GetFName: string;
    procedure SetID(const Value: Integer);
    procedure SetLastName(const Value: string);
    procedure SetFName(const Value: string);
    procedure ShowValues;
  public
    property ID : integer read GetID write SetID;
    property Name : string read GetFName write SetFName;
    property LastName : string read GetLastName write SetLastName;
  end;
 
var
  frmMain: TfrmMain;
 
implementation
 
uses Unit2;
 
{$R *.dfm}
 
procedure TfrmMain.FormCreate(Sender: TObject);
begin
  Names := TNames.Create; //Creation of class from unit uNames
  Names.ID := 0;
  Names.Name := 'John';
  Names.LastName := 'Doe';
end;
 
procedure TfrmMain.Unit2Click(Sender: TObject); //Open a form waiting
for a modal result var
  frmID: TfrmIDinsert;
begin
  frmID := TfrmIDinsert.Create(Self, ID); //Creating a form with
passing the ID parameter   frmID.Names := Names; //Copy class data to
a new class in unit2
 
  try
    if frmID.ShowModal = mrOK then
    begin
     Names := frmID.Names; //Copy back class data from Unit2
     ShowValues;
    end;
  finally
    frmIDinsert.Free;
  end;
end;
 
procedure TfrmMain.Unit3Click(Sender: TObject); //Open a form
begin
  frmNames := TfrmEditNames.Create(Self, Names); //Creating a form
with passing the class parameter   frmNames.Show;
end;
 
procedure TfrmMain.ShowValues;
begin
  ID := Names.ID; //Write to Label component through property
  Name := Names.Name;
  LastName := Names.LastName;
end;
 
procedure TfrmMain.FormActivate(Sender: TObject);
begin
  if frmNames <> nil then
  begin
    Names := frmNames.Names; //Copy back class data from Unit3
    if frmNames.ModalResult = mrClose then
    begin
      frmNames.ModalResult := 0;
      frmNames.Close;
    end;
  end;
 
  ShowValues;
end;
 
procedure TfrmMain.FormClose(Sender: TObject; var Action:
TCloseAction); begin
  if Assigned(frmNames) then
    frmNames.Free;
end;
 
function TfrmMain.GetID: Integer;
begin
  Result := StrToInt(lblID.Caption);
end;
 
procedure TfrmMain.SetID(const Value: Integer);
begin
  lblID.Caption := Value.ToString;
end;
 
function TfrmMain.GetFName: string;
begin
  Result := lblName.Caption;
end;
 
procedure TfrmMain.SetFName(const Value: string);
begin
  lblName.Caption := Value;
end;
 
function TfrmMain.GetLastName: string;
begin
  Result := lblLastName.Caption;
end;
 
procedure TfrmMain.SetLastName(const Value: string);
begin
  lblLastName.Caption := Value;
end;
 
end.

On button Unit2Click I create instance of Unit2. I also pass one
variable as parameter. Next I copy class data from Unit2 to class in
Unit2. In Unit2 a show and modify ID variable. Here I also wait for
form to be close, to read inserted data. The form Unit2 will stay on
top, so it is good for some type of data insertion.
 unit
Unit2;
 
interface
 
uses
  uNames,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,   Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls;
 
type
  TfrmIDinsert = class(TForm)
    OK: TButton;
    Cancel: TButton;
    edtID: TEdit;
    Label1: TLabel;
    procedure OKClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    fNames : TNames;
    function GetID: integer;
    procedure SetID(const Value: integer);
  public
    constructor Create(AOwner: TComponent; aID : Integer);
reintroduce;  //overload     property Names : TNames read fNames
write fNames;     property ID : integer read GetID write SetID;
  end;
 
var
  frmIDinsert: TfrmIDinsert;
 
implementation
 
{$R *.dfm}
 
constructor TfrmIDinsert.Create(AOwner: TComponent; aID : Integer);
begin
  inherited Create(AOwner);
  Names := TNames.Create;
  ID := aID;
end;
 
procedure TfrmIDinsert.FormActivate(Sender: TObject);
begin
  edtID.SetFocus;
end;
 
procedure TfrmIDinsert.OKClick(Sender: TObject);
begin
  Names.ID := ID;
end;
 
function TfrmIDinsert.GetID: integer;
begin
  Result := StrToInt(edtID.Text);
end;
 
procedure TfrmIDinsert.SetID(const Value: integer);
begin
  edtID.Text := Value.ToString;
end;
 
end.

On button Unit3Click I create instance of Unit3 and pass complete
class Names as parameter. In Unit3 a show ID variable and varibles
Name and LastName can be also modifyed. Here I can open multiple
instances of Unit3. Refreshing of data in done FormActivate.
unit Unit3;
 
interface
 
uses
  uNames,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,   Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls;
 
type
  TfrmEditNames = class(TForm)
    lblID: TLabel;
    edtName: TEdit;
    edtLastName: TEdit;
    Save: TButton;
    Cancel: TButton;
    Refresh: TButton;
    SaveClose: TButton;
    procedure CancelClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure SaveClick(Sender: TObject);
  private
    fNames : TNames;
    function GetLastName: string;
    function GetFName: string;
    procedure SetID(const Value: integer);
    procedure SetLastName(const Value: string);
    procedure SetFName(const Value: string);
    procedure ShowValues;
  public
    constructor Create(AOwner: TComponent; aNames: TNames);
reintroduce;     property Names : TNames read fNames write fNames;
    property ID : integer  write SetID;  // read GetID ; not needed,
it is a label     property Name : string read GetFName write SetFName;
    property LastName : string read GetLastName write SetLastName;
  end;
 
var
  frmEditNames: TfrmEditNames;
 
implementation
 
{$R *.dfm}
 
constructor TfrmEditNames.Create(AOwner: TComponent; aNames: TNames);
begin
  inherited Create(AOwner);
  Names := TNames.Create; //Creating unit3 class
  Names := aNames; //Copy class data to a Unit3 class
end;
 
procedure TfrmEditNames.CancelClick(Sender: TObject);
begin
  Close;
end;
 
procedure TfrmEditNames.FormActivate(Sender: TObject);
begin
  ShowValues;
end;
 
procedure TfrmEditNames.SaveClick(Sender: TObject); //Save values
into unit3 class begin
  Names.Name := Name;
  Names.LastName := LastName;
end;
 
procedure TfrmEditNames.ShowValues;
begin
  ID := Names.ID; //Write to Label component through  property
  Name := Names.Name;
  LastName := Names.LastName;
end;
 
procedure TfrmEditNames.SetID(const Value: integer);
begin
  lblID.Caption := Value.ToString;
end;
 
function TfrmEditNames.GetFName: string;
begin
  Result := edtName.Text;
end;
 
procedure TfrmEditNames.SetFName(const Value: string);
begin
  edtName.Text := Value;
end;
 
function TfrmEditNames.GetLastName: string;
begin
  Result := edtLastName.Text;
end;
 
procedure TfrmEditNames.SetLastName(const Value: string);
begin
  edtLastName.Text := Value;
end;
 
end.

I am not sure about the code in Unit1 - frmMain - Form Activate
procedure TfrmMain.FormActivate(Sender: TObject);
begin
  if frmNames <> nil then
  begin
    Names := frmNames.Names; //Copy back class data from Unit3
    if frmNames.ModalResult = mrClose then
    begin
      frmNames.ModalResult := 0;
      frmNames.Close;
    end;
  end;
 
  ShowValues;
end;

Is this proper way to return data back to Unit1? After closing
frmNames it looks like that frmNames is still not nil.

regards,
Matija

Edited by: Matija Murn on Jan 23, 2017 1:47 PM

This is too much code to review. On a quick read you're leaking memory
(whatever you would like to do with these forms). For example:

constructor TfrmEditNames.Create(AOwner: TComponent; aNames: TNames);
begin
inherited Create(AOwner);
Names := TNames.Create; //Creating unit3 class
Names := aNames; //Copy class data to a Unit3 class
end;

First you create a new instance of TNames and then in the very next
line of code leake the newly created object as you are pointing the
Names to the aNames instance. The comment is not correct it doesn't
copy the values just Names will point to the same instance as aNames.
Matija Murn

Posts: 16
Registered: 12/16/07
Re: Passing value to another form [Edit]  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 23, 2017 9:18 AM   in response to: Lajos Juhasz in response to: Lajos Juhasz
Hello,
you are right about the code length, but some newbie like me, can copy the code and have working example.
I thank you for your comment, you are right about pointing to instances and memory leak.
Before I start learning oop, I use global variables on main form very often. I see now that is a bad practice and I would like to learn proper oop way. So to separate UI from data. But I haven't found proper way to have this data available across forms (like global variable).
Regards, Matija

Edited by: Matija Murn on Jan 23, 2017 6:47 PM
Lajos Juhasz

Posts: 801
Registered: 3/14/14
Re: Passing value to another form [Edit] [Edit]  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 23, 2017 9:56 AM   in response to: Matija Murn in response to: Matija Murn
Matija Murn wrote:

Hello,
you are right about the code length, but some newbie like me, can
copy the code and have working example. I thank you for your
comment, you are right about pointing to instances and memory leak.
Before I start learning oop, I use global variables on main form very
often. I see now that is a bad practice and I would like to learn
proper oop way. So to separate UI from data. But I haven't found
proper way to have this data available across forms (like global
variable). Regards, Matija

Edited by: Matija Murn on Jan 23, 2017 6:47 PM

You can post the entire project to the attachment forums
at https://forums.embarcadero.com/forum.jspa?forumID=2 and post a link
here. That way we could compile and test your code.
Matija Murn

Posts: 16
Registered: 12/16/07
Re: Passing value to another form [Edit] [Edit]  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 23, 2017 10:51 AM   in response to: Lajos Juhasz in response to: Lajos Juhasz
I didn't know that exists. The project is on
https://forums.embarcadero.com/thread.jspa?threadID=246026&stqc=true

regards, Matija
Matija Murn

Posts: 16
Registered: 12/16/07
Re: Passing value to another form [Edit] [Edit]  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Jan 27, 2017 1:31 AM   in response to: Matija Murn in response to: Matija Murn
Hello,
The right answer, maybe with the right question I get on https://forums.embarcadero.com/thread.jspa?messageID=874521#874521
Regards,
Matija
Legend
Helpful Answer (5 pts)
Correct Answer (10 pts)

Server Response from: ETNAJIVE02