Текущий архив: 2004.07.04;
Скачать: CL | DM;
Вниз
EOutOfResources Найти похожие ветки
← →
kombat © (2004-05-31 23:14) [40]а в чем детский сад?
← →
Piter © (2004-05-31 23:19) [41]Детский сад говорите...
Gero & Nikkie, а что, есть надежда, что приведенный Nikkie пример рабочий? :)))
← →
Piter © (2004-05-31 23:20) [42]Давайте продолжим... покажите мне код создания формы класса TForm1
← →
nikkie © (2004-05-31 23:22) [43]>а в чем детский сад?
вот в этом:Piter © (24.05.04 23:52)
А конструктор, естественно, от TCustomForm. Как у формы можно конструктор перекрыть...
nikkie © (25.05.04 00:34)
>Как у формы можно конструктор перекрыть...
элементарно. также как и у любого другого класса.
Piter © (31.05.04 18:30)
nikkie (25.05.04 00:34) [12]
>Как у формы можно конструктор перекрыть...
элементарно. также как и у любого другого класса
Nikkie, ты так и не привел примера!
за неделю можно было и попробовать самому...
← →
Gero © (2004-05-31 23:22) [44]
> Piter © (31.05.04 23:19)
А есть какие-то подозрения в его работоспособности?
← →
Gero © (2004-05-31 23:23) [45]
> Давайте продолжим... покажите мне код создания формы класса
> TForm1
Вот он:
> constructor TForm1.Create(AOwner: TComponent);
> begin
> ShowMessage("aaa");
> inherited;
> end;
← →
Piter © (2004-05-31 23:25) [46]да нет, тут некоторая непонятка получилась.
Вы добавляете методы к уже созданной форме, а я говорю про динамическое созданием формы
← →
Gero © (2004-05-31 23:26) [47]
> Piter © (31.05.04 23:25)
Что значит <к уже созданной форме/i>?
По-моему, книжки тебе надо почитать...
← →
nikkie © (2004-05-31 23:26) [48]>покажите мне код создания формы класса TForm1
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
или тебе сюда еще Forms.pas запостить?
ЗЫ я так чувствую мы еще постов 30 эту животрепещущую тему мурыжить будем :(
← →
Piter © (2004-05-31 23:50) [49]Gero (31.05.04 23:26) [47]
Что значит <к уже созданной форме/i>?
То и значит. Что форму не ты, а дельфи создает... Как правильно заметил Nikkie вызовомApplication.CreateForm(TForm1, Form1);
nikkie (31.05.04 23:26) [48]
я так чувствую мы еще постов 30 эту животрепещущую тему мурыжить будем
ладно, не будем. Просто я не совсем согласен, что перекрывать метод формы можно также, как у других компонент.
Другие компоненты можно создать так сказать с нуля, а методы формы можно перекрывать только у создаваемой Дельфи с помощью CreateForm, потому как форма сохраняется в виде ресурса и при создании этот ресурс требуется.
Например, такой код не прокатит:program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Forms, classes;
type
TMyForm = class(TForm)
constructor Create(AOwner: TComponent); override;
end;
var
MyForm: TMyForm;
{ MyForm }
constructor TMyForm.Create(AOwner: TComponent);
begin
inherited;
end;
begin
MyForm:= TMyForm.Create(nil);
try
MyForm.ShowModal ;
finally
MyForm.Free;
end;
end.
Хотя с обычными компонентами все бы прошло нормально...
Ладно, вы меня теперь, наверное, за дебила будете держать, просто в последнее время я туго формулирую свои мысли :)
← →
Gero © (2004-05-31 23:52) [50]
> Что форму не ты, а дельфи создает
А все формы Delphi создает.
Прораммист лишь дает команды для этого.
← →
Piter © (2004-05-31 23:57) [51]Gero (31.05.04 23:52) [50]
А все формы Delphi создает
Ну вот и я про это.
А компоненты можно самому создать.
Это я хотел сказать про:
>Как у формы можно конструктор перекрыть...
элементарно. также как и у любого другого класса
Не так же. От практически любого другого класса ты можешь сделать наследника и там перекрыть любой метод. А с формами ни фига. Только если перекрывать метод уже объявленной Дельфей формы
← →
Gero © (2004-06-01 00:01) [52]
> От практически любого другого класса ты можешь сделать наследника
> и там перекрыть любой метод. А с формами ни фига.
unit MyCoolForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TMyCoolForm = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
end;
implementation
constructor TMyCoolForm.Create(AOwner: TComponent);
begin
ShowMessage("aaa");
inherited;
end;
end.
← →
Piter © (2004-06-01 00:10) [53]Gero (01.06.04 00:01) [52]
ну я не знаю весь твой код, не понять. Давай так - попробуй сделать наследника отTMyCoolForm
:)
← →
Gero © (2004-06-01 00:11) [54]
> Piter © (01.06.04 00:10)
Хватит прикалываться.
← →
Piter © (2004-06-01 00:12) [55]Gero (01.06.04 00:11) [54]
а я не прикалываюсь - если сделаешь, с меня пиво
← →
kombat © (2004-06-01 00:14) [56]ну перекрыть конечно можно, даже без переопределения конструктора
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage("bbb");
inherited;
ShowMessage("ccc");
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ShowMessage("bbb");
inherited;
ShowMessage("ccc");
end;
end.
==============
но форма создается через File/New
правда я видел методы для загрузки ресурса формы из файла или поля БД, но все равно это ресурс должен быть предваритеьно создан.
← →
Piter © (2004-06-01 00:15) [57]kombat (01.06.04 00:14) [56]
но форма создается через File/New
эге... это противоречит постановке задачи :)
← →
Piter © (2004-06-01 00:16) [58]Это опять же будет форма, созданная Дельфи...
← →
kombat © (2004-06-01 00:20) [59]я и не спорю что это форма создання делфи. Динамически, в коде, можна создать новый экземпляр формы заданного класа.
← →
nikkie © (2004-06-01 00:25) [60]То и значит. Что форму не ты, а дельфи создает... Как правильно заметил Nikkie вызовом Application.CreateForm(TForm1, Form1);
хочешь ли ты сказать, что эту форму нельзя создать TForm1.Create?
← →
Gero © (2004-06-01 00:30) [61]
> а я не прикалываюсь - если сделаешь, с меня пиво
Пиво мне бандеролью высылать будешь? ;)
unit CoolForms;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMyCoolForm = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
end;
TMyCoolForm2 = class(TMyCoolForm)
private
{ Private declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
end;
implementation
constructor TMyCoolForm.Create(AOwner: TComponent);
begin
GlobalNameSpace.BeginWrite;
try
CreateNew(AOwner);
if (ClassType <> TForm) and not (csDesigning in ComponentState) then
begin
if OldCreateOrder then DoCreate;
end;
finally
GlobalNameSpace.EndWrite;
end;
end;
constructor TMyCoolForm2.Create(AOwner: TComponent);
begin
inherited;
ShowMessage("Пиво - это good! ;)");
end;
end.
← →
Piter © (2004-06-01 00:47) [62]Gero (01.06.04 00:30) [61]
TMyCoolForm
интересную ты форму создал... положи на TMyCoolForm какой-нибудь Button и запусти... нету батона... куда пропал? :)
← →
sniknik © (2004-06-01 01:05) [63]подожди не высылай ему пиво, высылай мне, я тебя проще научу делать, без писания кода руками!
первое действие - создаеш форму. (ну в курсе, ткнуть мышой в "new form")
второе действие (да кстати не забудь первую обозвать MyCoolForm) лезеш в file-> new -> other -> project1(или как оно у тебя там будет) выбираеш MyCoolForm (то что она inherited уже будет стоять).
все, создано.
теперь еще раз подумай, куда высылать пиво, и высылай по справедливости, в неограниченных количествах.
p.s. а славно вы здесь развлекаетесь, мне понравилось.
p.p.s. Piter либо всех разводит либо ему нельзя ничего обьяснить в принципе, неужели еще неясно?
← →
имя (2004-06-01 08:39) [64]Удалено модератором
← →
Gero © (2004-06-01 08:39) [65]
> Piter © (01.06.04 00:47)
"Ну вы блин даете"(c)
> От практически любого другого класса ты можешь сделать наследника
> и там перекрыть любой метод. А с формами ни фига.
> Давай так - попробуй сделать наследника от TMyCoolForm :)
[61]
Метод перекрыл? Перекрыл. Причем, как ты и хотел, конструктор.
Наследника от TMyCoolForm создал? Создал. Причем так, как ты и хотел, не через NewForm, а создающийся в RT.
Блин, так ТЫ ТЕПЕРЬ ЕЩЕ И КОМПОНЕНТЫ ХОЧЕШЬ НА НЕЕ В DESIGN TIME КИДАТЬ???
Либо ты надо мной издеваешься(и не только надо мной), либо тебе пора отдохнуть от компа недельку-другую. Чем больше, тем лучше.
← →
имя (2004-06-01 08:40) [66]Удалено модератором
← →
Piter © (2004-06-01 18:42) [67]sniknik (01.06.04 01:05) [63]
первое действие - создаеш форму. (ну в курсе, ткнуть мышой в "new form")
а ты бы почитал сначала, что я пишу, прежде чем тут шутить шутки несмешные. Кажется четко было сказано, что форма должна создаваться ручками, а не с помощью Delphi IDE
sniknik (01.06.04 01:05) [63]
теперь еще раз подумай, куда высылать пиво
угу. Уже высылаю. Еще только расскажи что-нибудь...
Gero (01.06.04 08:39) [65]
Блин, так ТЫ ТЕПЕРЬ ЕЩЕ И КОМПОНЕНТЫ ХОЧЕШЬ НА НЕЕ В DESIGN TIME КИДАТЬ???
Хочу! Только я хочу кидать компоненты не на наследованную форму, а на сам экземпляр TCoolForm! Я же вижу форму CoolForm в Дельфи? Почему я не имею право туда кинуть компонент? Потому что от этой формы будет наследоваться другая форма и она уже теперь не пригодна для редактирования в Design Time?
Ты действительно сделал так, что от TCoolForm можно делать наследников! Но при этом функциональность самой TCoolForm потеряна. Разве это дело?
Представь себе, что ты для того, чтобы можно было сделать наследника от TWinControl переписал его! И теперь TWinControl не имеет Handle!
Ну и нафиг он кому будет такой нужен?
← →
nikkie © (2004-06-01 19:02) [68]>Piter
если тебе несколько человек говорят, что ты тупишь, наверное это повод задуматься?
в [38] приведен пример формы в которой
1. перекрыт конструктор
2. ее можно создавать с помощью TForm1.Create
3. на нее можно кидать компоненты и в ран-тайме эти компоненты будут присутствовать.
в [49] ты пишешь похожий класс TMyForm, но выкидываешь ссылку на dfm-файл. после этого жалуешься, что TMyForm.Create не работает.
в [61] Gero приводит тебе пример формы без dfm-файла. но тебя это не устраивает - ты хочешь теперь кидать компоненты на форму! какая форма, если ты сам ссылку {$R *.DFM} удалил и привел пример программы из одного dpr-файла?
← →
Piter © (2004-06-01 19:29) [69]nikkie (01.06.04 19:02) [68]
а-а-а, теперь понятно. Тогда прошу прощения. Я был просто свято уверен, что TMyCoolForm это форма из DFM, думал просто, что Gero не полностью модуль процитировал. Тогда да, все верно. Примем [61] за пример правильного перекрытия конструктора формы. Но это никак не сочетается с:
элементарно. также как и у любого другого класса
не также. Вот. :)
Хотя даже я устал... в общем, ладно, замяли эту тему, я не ожидал, что все выльется в такое...
← →
Piter © (2004-06-01 20:04) [70]Gero (01.06.04 08:39) [65]
тебе пора отдохнуть от компа недельку-другую. Чем больше, тем лучше
вот тут я с тобой абсолютно согласен... и не столько от компа, сколько от этого форума... потому что на компьютере я практически сейчас ничего больше и не занимаюсь :)
← →
Gero © (2004-06-01 21:47) [71]
> Piter © (01.06.04 20:04)
Природа, шашлык, девочки... :)
P.S. А пиво все же мне торчишь ;)
← →
Piter © (2004-06-15 00:51) [72]Вот что в ФИДО советуют:
1 )В конструктор формы должен быть передан *ВЛАДЕЛЕЦ* формы. Т.е.
Application а не MainForm
этого я не понимаю... ну да, должен быть передан владелец, а почему MainForm не может быть владельцем?
2) И вообще привыкни создавать формы через
Application.CreateForm(...)
Что скажете? Может помочь?
← →
Agent13 © (2004-06-15 01:08) [73]
> Что скажете? Может помочь?
Попробуй. Чё гадать-то теперь?
Страницы: 1 2 вся ветка
Текущий архив: 2004.07.04;
Скачать: CL | DM;
Память: 0.63 MB
Время: 0.025 c