|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Передача данных в другую форму
Как передать даные в другую форму программы
|
#2
|
|||
|
|||
Подробнее...
|
#3
|
|||
|
|||
у меня есть несколько цифр в переменых мне надо с ними работать в другой форме
|
#4
|
|||
|
|||
Цитата:
implementation Uses Unit1; {$R *.dfm} Последний раз редактировалось gebs, 14.08.2010 в 00:06. |
#5
|
|||
|
|||
и что дальше
|
#6
|
|||
|
|||
Цитата:
|
#7
|
|||
|
|||
покаж пример переменые не переходят
|
#8
|
|||
|
|||
|
#9
|
|||
|
|||
так и я могу. Мне надо чтобы я с перемеными первой формы мог работать в форме второй
|
#10
|
|||
|
|||
Вы хоть в код загляните. В частности Uses
http://alfile.ifolder.ru/18893029 дописал пару строк Форма 1 Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; S: string; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin s:='Привет'; Form2.Show; Form2.Label1.Caption:=s; Form1.Label1.Caption:=i; end; end. Форма 2 Код:
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm2 = class(TForm) Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; i: string; implementation Uses Unit1; {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin i:='Привет'; end; end. Откуда по вашему переменная i взялась в первой форме? Последний раз редактировалось gebs, 14.08.2010 в 16:14. |
#11
|
|||
|
|||
тут http://ifolder.ru/18889097
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; S: string; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin s:='Привет'; Form2.Show; Form2.Label1.Caption:=s; end; end. Код:
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm2 = class(TForm) Label1: TLabel; private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation Uses Unit1; {$R *.dfm} end. Все равно спс Последний раз редактировалось mbv, 14.08.2010 в 16:21. |
#12
|
|||
|
|||
Когда в приложении много форм и держать их постоянно открытыми накладно, то как вариант :
Код:
================================ program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); //Application.CreateForm(TForm2, Form2); //Форма НЕ создается при запуске приложения Application.Run; end. ================================ ================================ unit Unit1; interface uses Unit2, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private public //--------------------------------------------------- //свойства, которые должны быть обработаны в другой форме i1 : integer; i2 : integer; //--------------------------------------------------- end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('До вызова: '+'i1='+IntToStr(i1)+' i2='+IntToStr(i2)); Unit2.Form2_Execute(i1, i2); //Вызываем форму и передаем ей свойства (переменные) "нашей" формы ShowMessage('После вызова: '+'i1='+IntToStr(i1)+' i2='+IntToStr(i2)); end; procedure TForm1.FormCreate(Sender: TObject); begin i1 := 100; i2 := 2; end; end. ================================ ================================ unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin; type TForm2 = class(TForm) Button1: TButton; Button2: TButton; SpinEdit_i1: TSpinEdit; //здесь меняем i1 (из формы Form1) SpinEdit_i2: TSpinEdit; //здесь меняем i2 (из формы Form1) Label1: TLabel; Label2: TLabel; private public function Execute(Var i1, i2 : integer) : boolean; end; { Эта форма вызывается эпизодически и объявление ее в качестве глобальной переменной не актуально var Form2: TForm2; } function Form2_Execute(Var i1, i2 : integer) : boolean; implementation {$R *.dfm} function Form2_Execute(Var i1, i2 : integer) : boolean; Var FormX : TForm2; begin Result:=false; FormX:=TForm2.Create(nil); TRY Result:=FormX.Execute(i1,i2); FINALLY FreeAndNil(FormX); END; end; function TForm2.Execute(Var i1, i2 : integer) : boolean; begin Result:=false; SpinEdit_i1.Value:=i1; //Получили i1 из Form1 SpinEdit_i2.Value:=i2; //Получили i2 из Form1 if ShowModal=mrOk then begin Result:=true; i1:=SpinEdit_i1.Value; //вернули i1 в Form1 i2:=SpinEdit_i2.Value; //вернули i2 в Form1 end; end; end. ================================ Последний раз редактировалось roamer, 15.08.2010 в 19:30. |