Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Доступ к форме [D7]


Страницы:   1 2

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]

А как ты обращаешься ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо