[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

Passing data from main form to dialog box?

Posted on 2002-06-18
6
Medium Priority
?
308 Views
Last Modified: 2010-08-05
What is the best way to pass data from the mainform to a dialog box and then send data from the dialog back to the main form.

I want a CheckBoxlist on my dialog which gets populated by data which is accessible in the mainform.  Then when the user makes his/her selection and clicks ok, the list of selected items needs to be sent back to the mainform to be processed.  

???

I tried adding a parameter in the dialog form's create method, hoping I could pass in a TStringsList, but that didn't seem to work.  So how Can I do this??
0
Comment
Question by:TopherAPC
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 7

Expert Comment

by:Cynna
ID: 7091245
TopherAPC,

I presume you're using modal form as a dialog.
Well, if you TStringsList, one solution could be
like this:
(say Form1 is your main form, and Form2 is your dialog form)

In your dialog form (Form2)add method GetResults():

type
  TForm2 = class(TForm)
    Button1: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
    procedure GetResults(var Result: TStringList);
  end;

(.....)

procedure TForm2.GetResults(var Result: TStringList);
begin
   // Do something with Result, passed from main form:
   Button1.Caption:=Result.Strings[0];
   // ..... use data ....
   ShowModal;
   // Store whatever you want in Result:  
   Result.Clear;
   Result.Add('some data');
   Result.Add('some more data');
   //.... etc....
end;



In your main form(Form1), you then call your dialog like this:

procedure TForm1.Button1Click(Sender: TObject);
var Results: TStringList;
begin
  try
    Results:=TStringList.Create;
    Results.Add('Press me!');
    // This is the way to show your dialog form and send it data:
    Form2.GetResults(Results);
    // Results now has data from dialog form:
    Button1.Caption:=Results.Strings[0];
    // ...etc...
  finally
    Results.Free;
  end;
end;


0
 
LVL 11

Accepted Solution

by:
robert_marquardt earned 200 total points
ID: 7091841
I prefer it this way:

  with TMyDialog.Create do
    try
      // fill the controls of the dialog
      if ShowModal = mrOK then
      begin
        // pull the values from the controls
      end;
    finally
      Free;
    end;

If you use the dialog often then overwrite the ShowModal and add some parameters for the fill/pull actions. Fill and pull then reside in the TMyDialog unit.
0
 
LVL 12

Expert Comment

by:Lee_Nover
ID: 7092606
use the roberts way - also how I have it :)
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
LVL 1

Expert Comment

by:bogiboy
ID: 7093639
How I do it is:

In MainForm:

...
if (not assigned(myDialog1)) then AppliCation.CreateForm(TMyDialog,MyDialog1);
MyDialog.CheckBoxList1.Clear;
//fill in checklistbox items from here
for i:=0 to mydataSet.recordcount-1 do
  begin
   MyDialog.CheckBoxList1.Items.Add(myDataSet.Fields    [1].AsString);
   myDataset.next;
  end;
  if MyDialog1.ShowModal=mrOK then
   begin
    for i:=0 to MyDialog1.CheckListBox1.Items.Count-1 do
      begin
     strListItem:=MyDialog1.CheckListBox1.Items[i];
      //do something with selected value
       end;
sometimes, I create array of String dynamic array for this case , so I can destroy dialog when I am finished with reading values from the checklistbox.
     



0
 
LVL 1

Expert Comment

by:bogiboy
ID: 7097379
Sorry Robert, I repeated your answer...what I am doing is actually what you are proposing...
0
 

Expert Comment

by:SpideyMod
ID: 8280704
Force Accepted

SpideyMod
Community Support Moderator @Experts Exchange
0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…
Suggested Courses

649 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question