Mega Code Archive

 
Categories / Delphi / Forms
 

How to read data from another MDIChild form

Title: How to read data from another MDIChild form type TMDIChildForm = class(TForm) Edit1: TEdit; private { Private declarations } procedure ReadDataFromOtherMDIChildForm; end; var MDIChildForm: TMDIChildForm; implementation {$R *.DFM} uses MainForm; // Property FormStyle of this form is fsMDIForm procedure TMDIChildForm.ReadDataFromOtherMDIChildForm; var i: Integer; DataFromOtherForm: string; begin // Suppose you have created three different MDIChild forms of the same type, // each with the following caption: "aaa", "bbb", "ccc". // You are currently on form with caption "aaa" and want to read data // contained on form with caption "ccc". // You can find here the code, you have to use the "as" clause and // properties MDIChildCount and MDIChildren: // First you have to find where the form "ccc" is in memory; for i := 0 to MDIForm.MDIChildCount - 1 do begin if (Pos('ccc', MDIForm.MDIChildren[i].Caption) 0) then Break; end; // Check to see if the form is the last on MDIChildren array and // correct I variable if (i = MDIChildCount) then Dec(i); // I variable contains the index of the form with caption 'ccc' if (Pos('ccc', MDIForm.MDIChildren[i].Caption) 0) then begin // If the form with caption 'ccc' exists then you access data and show it // The following line of code is very interesting, look at the "as" clause, // if you have different types of MDIChild forms, you simply change // the type of form after the "as" clause // The data you want is contained on Edit1.Text with (MDIForm.MDIChildren[I] as TMDIChildForm).Edit1 do DataFromOtherForm := Text; ShowMessage(DataFromOtherForm); end; end;