Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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) Научиться использовать объекты там, где их создаешь.

Состояние кода.

Unit1
var
 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
2-1192529134
тим
2007-10-16 14:05
2007.11.11
ячейка без пунктирной рамки


2-1192530271
неугомонный
2007-10-16 14:24
2007.11.11
печать канвы грида


8-1169131582
Vovan #2
2007-01-18 17:46
2007.11.11
Вопрос о WAV


2-1192522713
webpauk
2007-10-16 12:18
2007.11.11
Тип данных


15-1192007594
Vlad Oshin
2007-10-10 13:13
2007.11.11
Не подключается программа к БД. MSSQLserver2005





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский