Solved

problem with exchanging data between 2 forms

Posted on 1999-01-24
2
255 Views
Last Modified: 2010-04-06

Hi experts,

I have a problem if I want to exchange data between 2 forms.

My application consits of 2 forms:

form1:
------

drivelistbox,directorylistbox,filelistbox, filterlistbox
commandbutton


form2:
------

3 editboxes, 1 commandbutton


If I press the button of form1, I read the selected name of the selected textfile to a string variable.

Now I open the file and want to copy the lines within the textfile to the editboxes of form2.
And this copying is not so easy for me.

I can't assign this copying to the button of form1, because in form1 the editboxes of form2 are unknown.
And if I assign this copying to the comandbutton of form2, the editboxes are known, but now the selected
filename will be an unknown identifier for Delphi.

I have one idea in my mind.

In form1 I could try something like

form2.edit1.text:'bla bla bla';

BUT; I want to manipulate the editboxes of form2 with the help of this routines:

function SplitStrAt(var s: string; position: Integer): string;
var
  i, mark: Integer;
begin
  mark := 0;

  for i := 1 to Length(s) do begin
    if (s[i] in delimiters) or (i = length(s)) then mark := i;
    if (i >= position) or (i = Length(s)) then begin
      Result := Copy(s, 1, mark);
      Delete(s, 1, Mark);
      break;
    end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
  i: integer;
begin
  s := 'This is a sample string which should be examined by the experts' +
    'in order to demonstrate which result I want if I split a string.';
  while s <> '' do
    for i := 0 to ComponentCount - 1 do
      if (Components[i] is TEdit) then
        TEdit(Components[i]).Text := SplitStrAt(s, 50);
end;

But the code of

procedure TForm1.Button1Click(Sender: TObject);

works only if both file selection and string manipulation are done within only one form.
As the form with the editboxes is already filled with other stuff, I have to avoid this
overloading and Imust use 2different forms.

Have you an idea, how my problem could be solved ?





0
Comment
Question by:mathes
2 Comments
 
LVL 1

Accepted Solution

by:
martin_g earned 20 total points
Comment Utility
The first simple thing that you'll wnat to check is the "uses" section of your forms.  On the Form1 unit in the "uses" clause just below interface, place a reference to the unit containing your Form2. Now in the Form2 unit, place a uses clause  immediately below the implementation clause referring back to your form 1 unit.

Having donw this both units should reconize each other.  Than to exchange data you simply do this:

Form2.edit1.text := Form1.edit1.text;

Or in your Button1Click
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
  i: integer;
begin
  s := 'This is a sample string which should be examined by the experts' +
    'in order to demonstrate which result I want if I split a string.';
  while s <> '' do
    for i := 0 to Form2.ComponentCount - 1 do
      if (Form2.Components[i] is TEdit) then
        TEdit(Form2.Components[i]).Text := SplitStrAt(s, 50);
end;

Hope this helps!
Martin Gauss

0
 

Author Comment

by:mathes
Comment Utility
Hi expert,

thank you for your help.

This is exactly what I was looking for.


With kind regards

Mathes

0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

772 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now