Главная страница
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.015 c
14-31453
XobBIT
2003-06-17 23:20
2003.07.10
Кнопка помощи в заголовке формы


14-31514
picaroon
2003-06-25 10:01
2003.07.10
Помогите кто чем может с кодом


4-31580
Nick Denry
2003-05-08 20:12
2003.07.10
SetMenuItemBitmaps or SetMenuItemInfo


3-31114
Komar
2003-06-17 17:21
2003.07.10
ADOStoreProc.ExecProc в БД Oracle


14-31433
GeminiLI
2003-06-23 08:28
2003.07.10
Большой проэкт