Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Вниз

Наследник от 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.044 c
15-1162387290
Ученик чародея.
2006-11-01 16:21
2006.11.19
Что вы обычно используете abstract или dynamic методы?


15-1162140248
Ketmar
2006-10-29 19:44
2006.11.19
E107 CMS


15-1162535249
_longint
2006-11-03 09:27
2006.11.19
unsigned 64-bit


2-1162203111
Still Swamp
2006-10-30 13:11
2006.11.19
Как получиьт разницу времени локального и GMT


2-1162367551
Antonq
2006-11-01 10:52
2006.11.19
Как сообщением поменять курсор мыши





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский