wiele okien i przekazywanie wartosci miedzy nimi

0

W jaki sposob w Delphi przekazywac wartosc np. tablicy, zmiennych pomiedzy roznymi oddzielnymi oknami?

Pierwsze okno:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Czesc1: TMenuItem;
    oja1: TMenuItem;
    oja2: TMenuItem;
    Waszkuzyn1: TMenuItem;
    Kleks1: TMenuItem;
    Info1: TMenuItem;
    Program1: TMenuItem;
    Zakocz1: TMenuItem;
    Label1: TLabel;
    Edit1: TEdit;
    StaticText1: TStaticText;
    procedure Info1Click(Sender: TObject);
    procedure Zakocz1Click(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    a,b,c : integer;
  end;

var
  Form1: TForm1;

implementation
uses okno;
{$R *.dfm}

procedure TForm1.Info1Click(var a: integer; Sender: TObject);
begin
   with TOkienko.Create(Self) do
   begin
//      Okienko.a:=a;
      ShowModal();
      Free();
   end;
    ShowMessage('Hahahaha');
    StaticText1.Caption:='Wstawiono:   ' + IntToStr(a);


end;

procedure TForm1.Zakocz1Click(Sender: TObject);
begin
Close();
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = vk_return then
  begin
    a:=StrToInt(Edit1.Text);
    ShowMessage('Hahahaha');
    StaticText1.Caption:='Wstawiono:   ' + IntToStr(a);
  end




end;

end.

Drugie okno:

unit okno;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TOkienko = class(TForm)
    BitBtn1: TBitBtn;
    Label1: TLabel;
    Edit1: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    a,b,c : Integer;
  end;

var
  Okienko: TOkienko;
implementation
uses Unit1;
{$R *.dfm}



procedure TOkienko.FormCreate(Sender: TObject);
begin
Memo1.Lines.Add('Dodano ' + IntToStr(a));
a:=66;
Memo1.Lines.Add('Dodano ' + IntToStr(a));
end;



procedure TOkienko.BitBtn1Click(Sender: TObject);
begin
Form1.a:=a;
end;

end.

Zastosowany w tym kodzie przeze mnie sposob niestety nie dziala. Prosze o pomoc!

Zapomnialem dodac, ze chcialem przekazac wartosc z jednego okna do drugiego i na odwrot.

0

Hmm - nie specjalnie rozumiem Twój problem, ale spróbuję pomóc. Otóż trzeba rozróżnić : zmienna i pole. Jeżeli chcesz, aby obie formy widziały te same dane w prosty sposób - zadeklaruj zmienne globalne w module jednym z nich. Na przykład tak:

var
  Form1: Tform1; // forma
  a, b, c: Integer; // zmienne globalne

Teraz wystarczy dodać w drugim <font color="green">uses Unit1</span> i mamy dostęp do tych zmiennych - w końcu znajdują się w części publicznej interface. Ty stworzyłeś pola - jeśli chciałbyś się (u Ciebie) odwołać z drugiego to robisz to tak:

Form1.a
Form1.b
Form1.c

// itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1