Форум: "Прочее";
Текущий архив: 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.042 c