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

Вниз

Наследник от TForm запустить не могу :) :)   Найти похожие ветки 

 
kick   (2006-11-01 15:59) [0]

type
TmyForm = class (TForm)

public
constructor Create (AOwner: TComponent); override;

end;

type
TForm = class (TForm)
procedure Button1.Click (....);
end;

var
Form1: TForm;
MyForm: TmyForm;

implementation

procedure Form1.Button1Click(...);
begin
application.createform(TMyForm,MyForm);// варианты
MyForm.Show;
end;

варианты:
MyForm:=TMyForm.Create(Self);
и другие...
что я только не пробовал либо на выходе получаю AV, либо мой constructor игнорируется.

З.Ы. Пишу по памяти, но структура кода примерно такая...
скажите как реализовать наследника правильно и сразу его использовать...
З.Ы.Ы. Знаю сам, торможу немного... :)


 
Александр Иванов ©   (2006-11-01 16:05) [1]

Правильно - создать средствами IDE новую форму, она будет наследником TForm, или сделать тоже, что делает IDE при создании формы, вручную.


 
Percent   (2006-11-01 16:07) [2]

Формы должны размещаться в разных модулях.


 
jack128 ©   (2006-11-01 16:18) [3]

MyForm :=  TMyForm.CreateNew(Self);


 
Александр Иванов ©   (2006-11-01 16:31) [4]


> jack128 ©   (01.11.06 16:18) [3]

На его код посмотри, там две формы в одном модуле и кроме того и именами проблема: TForm = class (TForm)


 
Lamer@fools.ua ©   (2006-11-01 16:33) [5]

type
TForm = class (TForm)


Круто.


 
Курдль ©   (2006-11-01 16:34) [6]

А вроде ж Delphi умеет создавать наследников из меню, типа:
New/InheridedForm?.. Или аутору надо обязательно вручную?


 
Александр Иванов ©   (2006-11-01 16:38) [7]


> Курдль ©   (01.11.06 16:34) [6]

Новую форму Дельфи всегда создает, как наследника от TForm.


 
kick   (2006-11-01 16:41) [8]


> Lamer@fools.ua ©   (01.11.06 16:33) [5]
> typeTForm = class (TForm)Круто.


говорюш, пишу по памяти, на скорую руку... а IDE под рукой нет - ошибся короче. не пинайте...
_____________________________

всем подсказавшим по поводу разных модулей - СПАСИБО! не подумал, дома попробую...
_____________________________

> jack128 ©   (01.11.06 16:18) [3]
>
> MyForm :=  TMyForm.CreateNew(Self);


что это значит? смысле так надо или так не надо :)
_____________________________

> Курдль ©   (01.11.06 16:34) [6]

да, автору надо вручную :)


 
jack128 ©   (2006-11-01 17:41) [9]

Александр Иванов ©   (01.11.06 16:31) [4]
там две формы в одном модуле

хоть десять.

Александр Иванов ©   (01.11.06 16:31) [4]
TForm = class (TForm)

видимо это просто опечатка, человек же сказал, то пишет код по памяти.

kick   (01.11.06 16:41) [8]
что это значит? смысле так надо или так не надо :)

если форма создоется вручную, а средствами IDE, то так надо


 
kick   (2006-11-01 18:10) [10]


> jack128 ©   (01.11.06 17:41) [9]
> хоть десять.


Евгений, тогда (извиняюсь за назойливость) не могли бы Вы ткнуть пальцем, что ш неправильно я делаю в этом наследнике (будь он проклят :).)
очень важно чтобы при этом мой конструктор не игнорировался компилятором! Что я с изумлением наблюдал при одном из вариатов ( не помню при каком) сама форма при этом создалась, но вот конструктор...
спасибо


 
ANB ©   (2006-11-01 18:46) [11]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, 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 Form2: TForm2;
begin
 Form2:= nil;
 try
   Form2:= TForm2.Create(Self);
   Form2.ShowModal;
 finally
   FreeAndNil(Form2);
 end;
end;

end.


 
ANB ©   (2006-11-01 18:46) [12]

unit Unit2;

interface

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

type
 TForm2 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   constructor Create(AOwner: TComponent); override;
 end;

implementation

{$R *.dfm}

{ TForm2 }

constructor TForm2.Create(AOwner: TComponent);
begin
 inherited;
 ShowMessage("Конструктор");
end;

end.


 
ANB ©   (2006-11-01 18:47) [13]

делфа 6. На первую форму кинул кнопку. Из автосоздаваемых - убрал форму2.


 
kick   (2006-11-01 18:56) [14]

ANB ©   (01.11.06 18:46) [11] и [12]

Спасибо!!!
Я собирался это дома попробовать (в разных модулях смысле)... я у jack128 спросил где ошибка именно при реализации обоих наследников TForm в одном модуле, т.к. он сказал что "хоть десять" , и я вот тоже думаю - почему нет?, контейнер как контейнер, наследник TWinControl как наследник... что мешает описать несколько подобных классов в одном модуле никак не пойму :(
но Вам Большое Спасибо Андрей, хотя бы убедившись в том что этого нельзя сделать в пределах одного модуля, и принявшись выносить свой класс в другой юнит - я буду наверняка знать как это сделать ;)


 
jack128 ©   (2006-11-01 18:56) [15]

kick   (01.11.06 18:10) [10]
Евгений, тогда (извиняюсь за назойливость) не могли бы Вы ткнуть пальцем, что ш неправильно я делаю в этом наследнике (будь он проклят :).)


Ты не правельно его создаешь.  Если форму ты класс формы ты создаешь ручками, а не через New/Form или New/Other/Inheritable Items, то такую форму нужно создовать конструктором CreateNew.


 
jack128 ©   (2006-11-01 18:58) [16]

kick   (01.11.06 18:56) [14]
хотя бы убедившись в том что этого нельзя сделать в пределах одного модуля

в одном модуле можно описывать сколько угодно классов, даже если эти классы - наследники TForm. Чего именно нельзя сделать в одном модуле в твоем случае - я так и не понял. Может пояснишь?


 
kick   (2006-11-01 19:13) [17]


> jack128 ©   (01.11.06 18:58) [16]
>Чего именно нельзя сделать в одном модуле в твоем случае - я так и не понял. Может пояснишь?


попытаюсь:


> Percent   (01.11.06 16:07) [2]
> Формы должны размещаться в разных модулях.



> Александр Иванов ©   (01.11.06 16:31) [4]
> На его код посмотри, там две формы в одном модуле


вот народ который утверждает что в одном модуле нельзя реализовать два класса - наследника TForm. Это меня и ввело в заблуждение...
Если CreateNew подтвердит что ты прав и у меня таки все получится...
то чтош...: тебе спасибо! и +1, а Percentu и Александру Иванову - низачот!( :) - без обид, я шутя...)
ну а если нет, то завтра с удовольствием продолжу дискуссию.
на сем: до завтра! пойду домой пробовать!


 
Александр Иванов ©   (2006-11-01 19:31) [18]

Ну незачет, так незачет :) Я имел ввиду, что для начала лучше следовать стандартными путями, изучая их.



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

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

Наверх




Память: 0.51 MB
Время: 0.029 c
15-1162272915
pusrg
2006-10-31 08:35
2006.11.19
Проблема с воспроизведением видеофайла


8-1144670277
Acidlex
2006-04-10 15:57
2006.11.19
Измерение уровня сигнала с микрофона и линейного входа


15-1162322057
DillerXX
2006-10-31 22:14
2006.11.19
Помогите с Матаном немного


15-1162072591
Petr V.Abramov
2006-10-29 01:56
2006.11.19
Исключения в .Net


2-1161872664
Ezorcist
2006-10-26 18:24
2006.11.19
Кнопка формы на панели задач