Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
ВнизПроблема с формами... или руками моими... Найти похожие ветки
← →
boa_kaa © (2007-09-29 13:13) [40]
> x.pro (29.09.07 13:09) [38]
если не добавлять перекрестные ссылки на юниты, то нужно делать это через какое-нибудь событие, например, при нажатии на кнопку или ловить закрытие (или изменение) на form3
← →
Anatoly Podgoretsky © (2007-09-29 13:16) [41]> x.pro (29.09.2007 13:09:38) [38]
Я так и не понял, насчет глобальных переменных формы и что куда переносится.
Говорю же могила.
← →
x.pro (2007-09-29 13:20) [42]нет никаких глобальных переменных.
нужно просто перенести текст из edit на форме3 в edit на форме 2. а форма 3 содается когда нажимается кнопка на форме 2. и все.
← →
boa_kaa © (2007-09-29 13:29) [43]Специально сотворил то, о чем речь. Переносится, однако. Правда у меня только Form1 и Form2.
Unit1:var
Form1: TForm1;
implementation
{$R *.dfm}
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
var
Form2: TForm2;
begin
Form2 := TForm2.Create(Application);
Form2.Edit1.Text := Edit1.Text;
Form2.Show;
end;
Unit2:var
Form2: TForm2;
implementation
{$R *.dfm}
uses Unit1;
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.Edit1.Text := Edit1.Text;
Close;
end;
← →
boa_kaa © (2007-09-29 13:30) [44]Да! из Unit2 можно убрать
var
Form2: TForm2;
они там случайно завалялись
← →
Anatoly Podgoretsky © (2007-09-29 13:32) [45]> boa_kaa (29.09.2007 13:29:43) [43]
А вот и завязка
Form1.Edit1.Text := Edit1.Text;
← →
boa_kaa © (2007-09-29 13:34) [46]
> Anatoly Podgoretsky © (29.09.07 13:32) [45]
угу. Потому я и говорю:
> boa_kaa © (29.09.07 13:13) [40]
← →
x.pro (2007-09-29 13:37) [47]
> boa_kaa © (29.09.07 13:29) [43]
и у меня это работает! отлично работает. но вот если еще одну форму сделать, то ничего не получится! добавить еще одну форму и вызывайте ее при созданой 2й
← →
x.pro (2007-09-29 13:38) [48]перекрестная ссылка это указатель что ли?
← →
x.pro (2007-09-29 13:42) [49]все верное, уважаемые! но если создать еще одну форму и создавать ее только таким де путем но из формы 2, то из 3 в 2 ничего не передается!
← →
x.pro (2007-09-29 13:45) [50]но что самое поразительное из 3 в 1 передает!!!!!!!!!!! а из 3 в 2 - нет!
← →
engine © (2007-09-29 13:47) [51]Ты в 17-й строке ошибку исправил?
← →
boa_kaa © (2007-09-29 13:50) [52]Естественно! Потому я и говорю:
> boa_kaa © (29.09.07 13:30) [44]
Та форма, которую ты создаешь из Form1 - это не та, которую ты используешь из Form3. Из Form3 ты используешь именно глобально описанную в Unit2 Form2. Если ты уберешь глобально описание и приведешь код в токое согласиеtype
TForm2 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
//здесь был Form2
implementation
то ты получишь именно то, о чем говорил Анатолий, т.е. ж...
← →
x.pro (2007-09-29 13:51) [53]
> engine © (29.09.07 13:47) [51]
что это за строка 17?! где она?!
здесь:
procedure BtnClick...
var
f: Tf2;
begin
f := Tf2.Create(self);
f.Show;
f.Label1.Caption := "...";
...
end;
их всего 9!
← →
boa_kaa © (2007-09-29 13:51) [54]
> x.pro (29.09.07 13:45) [50]
> но что самое поразительное из 3 в 1 передает!!!!!!!!!!!
> а из 3 в 2 - нет!
Это не поразительно, а вполне объяснимо, т.к. Form1 объявлен глобально!
← →
x.pro (2007-09-29 13:51) [55]
> engine © (29.09.07 13:47) [51]
что это за строка 17?! где она?!
здесь:
procedure BtnClick...
var
f: Tf2;
begin
f := Tf2.Create(self);
f.Show;
f.Label1.Caption := "...";
...
end;
их всего 9!
← →
boa_kaa © (2007-09-29 13:52) [56]
> x.pro (29.09.07 13:51) [55]
Отстань ты с 17 строкой. Это обычный подкол, когда не приводят код и говорят, что он не работает
← →
boa_kaa © (2007-09-29 13:55) [57]Короче! Если в 2х словах, то ты путаешь КЛАССЫ с ОБЪЕКТАМИ
← →
x.pro (2007-09-29 13:58) [58]
> boa_kaa © (29.09.07 13:50) [52]
Хорошо, если я напишу так как вы говорите, то как обратиться к form2 из form3?
ее нужно локально объявить? тогда - Av
← →
x.pro (2007-09-29 14:06) [59]все проблему решил так. в Private формы 1 написал переменную типа Tform2, когда создавай 2ю форму писла такой код:
frm2 := tForm2.Create(Application);
frm2.label1.caption := "From form1: hello";
frm2.Show;
-------------------------------------------
а из 3й формы обращался так:
Form1.Frm2.Edit1.text := "Form form 3";
-------------------------------------------
в Одессу через китай... но может так и надо было?
← →
Anatoly Podgoretsky © (2007-09-29 14:09) [60]> x.pro (29.09.2007 14:06:59) [59]
Ни одна вызымаемая форма не должна ничего знать про вызывающею.
← →
boa_kaa © (2007-09-29 14:09) [61]сейчас самым простым для тебя будет:
1) Перенести все 3 формы в автокриэйт
2) Привести код в состояние, приведенное ниже
3) Разобраться с тем, что такое класс, а что такое его экземпляр.
4) Научиться использовать объекты там, где их создаешь.
Состояние кода.
Unit1var
Form1: TForm1;
implementation
{$R *.dfm}
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Edit1.Text := Edit1.Text;
Form2.Show;
end;
Unit2:var
Form2: TForm2;
implementation
{$R *.dfm}
uses Unit1, Unit3;
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.Edit1.Text := Edit1.Text;
Form3.Edit1.Text := Edit1.Text;
Form3.Show;
end;
Unit3:var
Form3: TForm3;
implementation
{$R *.dfm}
uses Unit2, Unit1;
procedure TForm3.Button1Click(Sender: TObject);
begin
Form1.Edit1.Text := Edit1.Text;
Form2.Edit1.Text := Edit1.Text;
end;
← →
{RASkov} © (2007-09-29 14:11) [62]> [58] x.pro (29.09.07 13:58)
> то как обратиться к form2 из form3?
Если у тебя показ форм идет как Show, то имхо, лучше вернуть все как было, т.е. переменные форм и в AutoCreate их тоже вернуть
Только не нужно по нажатию кнопок ничего заного создавать....
Или как вариант перед обращением к конкретной форме, проверить есть ли она - Assigned(), но и не забывать нилить ее после удаления...
С ShowModal такого не должно быть.....
ЗЫ: А вернуть все наместо нужно(желательно) и еще по одной причине См [57] Пока не научишься их отличать...
← →
x.pro (2007-09-29 15:43) [63]Всем большое спасибо! Я для себя сделал урок. Спасибо!
← →
имя (2007-10-07 22:12) [64]Удалено модератором
← →
имя (2007-10-07 22:26) [65]Удалено модератором
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.05 c