[Lazarus] How do I change properties for GUI-components from another unit?
How do I change properties for GUI-components from another unit? e.g. hide a button or change a label text from a different unit. /anders - No virus found in this message. Checked by AVG - www.avg.com Version: 2015.0.5941 / Virus Database: 4342/9751 - Release Date: 05/11/15 -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] How do I change properties for GUI-components from another unit?
On 11/05/2015 22:41, Anders Eriksson wrote: How do I change properties for GUI-components from another unit? e.g. hide a button or change a label text from a different unit. Two example units that inter-communicate might be as follows: unit Unit1; {$mode objfpc}{$H+} interface uses Forms, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure FormShow(Sender: TObject); end; var Form1: TForm1; implementation uses unit2; {$R *.lfm} { TForm1 } procedure TForm1.FormShow(Sender: TObject); begin Form2.Show; end; end. unit Unit2; {$mode objfpc}{$H+} interface uses Forms, StdCtrls; type TForm2 = class(TForm) BChange: TButton; procedure BChangeClick(Sender: TObject); end; var Form2: TForm2; implementation uses Unit1; {$R *.lfm} procedure TForm2.BChangeClick(Sender: TObject); begin Form1.Button1.Hide; Form1.Label1.Caption:='Changed'; end; end. == The uses clauses are the critical feature. Howard --- This email has been checked for viruses by Avast antivirus software. http://www.avast.com -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] How do I change properties for GUI-components from another unit?
Thank you very much for your answer. I will try it out tomorrow. I have struggled with this for weeks. /anders Howard Page-Clark skrev den 2015-05-12 00:43: On 11/05/2015 22:41, Anders Eriksson wrote: How do I change properties for GUI-components from another unit? e.g. hide a button or change a label text from a different unit. Two example units that inter-communicate might be as follows: unit Unit1; {$mode objfpc}{$H+} interface uses Forms, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure FormShow(Sender: TObject); end; var Form1: TForm1; implementation uses unit2; {$R *.lfm} { TForm1 } procedure TForm1.FormShow(Sender: TObject); begin Form2.Show; end; end. unit Unit2; {$mode objfpc}{$H+} interface uses Forms, StdCtrls; type TForm2 = class(TForm) BChange: TButton; procedure BChangeClick(Sender: TObject); end; var Form2: TForm2; implementation uses Unit1; {$R *.lfm} procedure TForm2.BChangeClick(Sender: TObject); begin Form1.Button1.Hide; Form1.Label1.Caption:='Changed'; end; end. == The uses clauses are the critical feature. Howard --- This email has been checked for viruses by Avast antivirus software. http://www.avast.com -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus - No virus found in this message. Checked by AVG - www.avg.com Version: 2015.0.5941 / Virus Database: 4342/9751 - Release Date: 05/11/15 - No virus found in this message. Checked by AVG - www.avg.com Version: 2015.0.5941 / Virus Database: 4342/9751 - Release Date: 05/11/15 -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
Re: [Lazarus] How do I change properties for GUI-components from another unit?
Il 11/05/2015 23:41, Anders Eriksson ha scritto: How do I change properties for GUI-components from another unit? e.g. hide a button or change a label text from a different unit. If you have in unit1 a Form1 with a Button1 component, and Form1 is declared in the Interface section of unit1 (i.e. it's made public), in unit 2 you must have a clause uses unit1 and then you can simply code Form1.Button1.Hide or Form1.Button1.Caption := 'blah'; Only in case of ambiguity you must prepend also the unit name. e.g. unit2 and unit3 both have a Panel1 component and they both have it declared in the Interface section. Then in unit1 you will have uses unit2,unit3. And to operate on them you will code: unit2.Panel1.hide; unit3.Panel1.show; If there's no ambiguity, it's unnecessary. Giuliano -- Giuliano Colla Project planning question: when it's 90% done, are we halfway or not yet? -- ___ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus