Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.10;
Скачать: CL | DM;

Вниз

Работа с TForm через строку.   Найти похожие ветки 

 
Фадеева   (2003-06-27 20:09) [0]

Большая просьба разрешить мою проблему: в TForm1 есть кнопка, вызывающая TForm2(через string) и открывающая ее методом ShowModal. И это работает до тех пор пока ShowModal не заменить на метод TForm2.New. Транслятор этот метод не видит. Вопрос: как вызвать TForm2.New?

============
unit Unit1;

interface

uses Unit2, Unit3, Unit4, Unit5,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterClass(Tform2);
RegisterClass(Tform3);
RegisterClass(Tform4);
RegisterClass(Tform5);
end;

procedure TForm1.Button1Click(Sender: TObject);
var f : TFormClass;
begin
f := TFormClass(FindClass(edit1.text));
with f.Create(self) do begin
f := MethodAddress("New");
if f <> nil then
f.ShowModal;
end;
end;

end.

=========
=========

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure New (const Name : string);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;


implementation

{$R *.dfm}

procedure TForm2.New(const Name : string);
begin
Label1.Caption := Name;
showmodal;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
close;
end;

end.

Заранее большое спасибо за внимание.


 
reonid ©   (2003-06-27 20:17) [1]

Вот этого я не понял:

f := MethodAddress("New");
if f <> nil then
f.ShowModal; // f - это же теперь указатель на метод ???


 
reonid ©   (2003-06-27 20:24) [2]

Кстати, какой ещё транслятор???
Ещё - зачем ты пытаешься найти метод New у класса TForm1?
там его нет.


 
Palladin ©   (2003-06-27 23:38) [3]

а где объявление TFormClass?
TForm2.New можно вызвать только лишь объявив его методом класса или конструктором...
иначе нужно создать объект...



Страницы: 1 вся ветка

Текущий архив: 2003.07.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
3-31081
gsv_
2003-06-16 09:29
2003.07.10
ADO MDAC и др. Deploying database applications


1-31293
_mandrake_
2003-06-25 15:05
2003.07.10
Image.Picture. SaveToFile()


1-31291
Antonyan
2003-06-26 15:06
2003.07.10
Индустриальные VCL


1-31186
Adil Aliev
2003-06-28 00:57
2003.07.10
MDIChild


14-31421
sapsi
2003-06-21 14:41
2003.07.10
Ваше мнение о Гарри Поттере.