![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Доступ к форме [D7]
zokzok © (2004-12-29 15:09:00)есть три формы: из 1й открывается (ShowModal) 2я, из 2й - 3я (ShowModal). При этом необходимо иметь доступ из 3й формы во 2ю, но получается, что 2я форма (при обращении к ней из Form3) равна NIL!!! Но аналогичным способом Form1 совершенно свободно доступна из Form2. Как при такой ситуации получить доступ к Form2 из Form3?
zokzok (2004-12-29 16:50:00) [21]
unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var modal: TForm2;
begin
Modal:=TForm2.Create(Application);
try
Modal.ShowModal
finally
Modal.Free
end;
end;
end.
{----------------------------------------------}
unit2.pas
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit3, unit1;
{$R *.DFM}
procedure TForm2.Button1Click(Sender: TObject);
var modal: TForm3;
begin
Modal:=TForm3.Create(Application);
try
Modal.ShowModal
finally
Modal.Free
end;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Unit1.Form1.Caption := 'string'
{здесь - работает}
end;
end.
{----------------------------------------------}
unit3.pas
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm3 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses unit2;
{$R *.DFM}
procedure TForm3.Button1Click(Sender: TObject);
begin
Unit2.Form2.Caption := 'string'
{вот здесь вся проблема}
end;
end.
Fay (2004-12-29 16:40:00) [22]2 zokzok © (29.12.04 16:27) [3]
Delphi Started Edition ? 8)
Digitman (2004-12-29 16:37:00) [23]
> Код нулевого проекта - в студию!
"Эт точно !" (С) Павел Артемьич
))
Symb (2004-12-29 16:35:00) [24]Код нулевого проекта - в студию!
zokzok (2004-12-29 16:27:00) [25]
> А как ты обращаешься ?
ну так, например:
Unit2.Form2.caption := 'string' (из Form3)
> ошибки/недостатки алгоритма.
если написать так: Unit1.Form1.caption := 'string' (из Form2) всё работает идеально. Обе формы 2 и 3 создаются совершенно одинаково. Я всё проверял на нулевом проекте (без добавления лишнего) - с 2мя формами работает, с 3мя - нет.
Digitman (2004-12-29 15:12:00) [26]
> но получается, что 2я форма (при обращении к ней из Form3)
> равна NIL
хреново получается.
надо. видимо, исправлять ошибки/недостатки алгоритма.
msguns (2004-12-29 15:10:00) [27]А как ты обращаешься ?