Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2012, 23:24   #1
Wwormka
Новичок
Джуниор
 
Регистрация: 15.06.2012
Сообщений: 2
По умолчанию Перехват события Oncreate

В результате такого кода вылетает ошибка "incompatible types tfr and tform1".

Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    btn1: TButton;
    btn2: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TFr = class(TForm)
   procedure DoCreate;override;
  end;

var
  Form1: TForm1;
    fcl :TFormClass;
    Fr: TFr;
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var Frm: TCustomForm;
begin
 RegisterClass(TForm2);
 fcl:= TFormClass(FindClass('Tform2'));
 fr:=fcl.Create(nil);
 fr.Show;

end;

procedure TFr.DoCreate;
begin
//  inherited;
end;

end.
Необходимо при создании Form2 не выполнять ее событие onCreate. Если в разделе var объявить "var fr: TForm;", то ошибок не будет и форма2 открывается, но onCreate выполняется. Подскажите где я туплю
Wwormka вне форума Ответить с цитированием
Старый 16.06.2012, 07:24   #2
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
Восклицание

Wwormka, у вас одно сообщение на форуме, никто не может знать какой ваш опыт программирования. Модификация существующих компонентов есть не самая простая часть программирования в Дельфи.
Прежде чем создавать или модифицировать существующий компонент я думаю надо иметь уверенность 100% что планируемую задачу невозможно
выполнить на базе существующих, желательно стандартных компонентов.

Модифицированные компоненты и классы лучше хранить в отдельном файле,
желательно 1компонент=1файл.
Если действительно не обойтись без своего класса TForm, я бы разместил его в файле MyForms.pas (добавить в Uses).

Цитата:
Сообщение от Wwormka Посмотреть сообщение
при создании Form2 не выполнять ее событие onCreate.
Подскажите где я туплю
Событие onCreate, по дефолту там ничего нет, оно появляется когда разработчик хочет например загрузить параметры из iniFile.
Кто заставляет выполнять секцию кода которого нет? оО
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.

Последний раз редактировалось Stilet; 16.06.2012 в 12:50.
HellMercenariess вне форума Ответить с цитированием
Старый 16.06.2012, 07:58   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Wwormka, без написания наследника - никуда.
Код:
procedure TForm1.btn1Click(Sender: TObject);
var Frm: TCustomForm;
begin
 RegisterClass(TForm2);
 fcl:= TFormClass(FindClass('Tform2'));
 fr:=fcl.Create(nil);
 fr.Show;
end;
Заведомо не рабочий. OnCreate уже отработает к этомому моменту.
Человек_Борща вне форума Ответить с цитированием
Старый 16.06.2012, 11:44   #4
Wwormka
Новичок
Джуниор
 
Регистрация: 15.06.2012
Сообщений: 2
По умолчанию

HellMercenariess с опытом у меня не очень.
onCreate в form2 не пустой, там навеша много много всяких действий.
У меня задача запустить форму на панеле имея в строке ее класс и имя.
То что
Код:
 
fcl:= TFormClass(FindClass('Tform2'));
 fr:=fcl.Create(nil);
не рабочий код я понимаю, но как решить задачу так и незнаю

Мастерю нечто дизайнера формы. На Form1 пользователь в списке всех существующих форм выберет интересующую его. Таким образом будут получены текстовые имя и класс формы. Выбранная форма должна открыться на панельке формы 1. При этом ни 1 событие открываемой формы не должно выполнятся дабы не было ошибок.

Последний раз редактировалось Stilet; 16.06.2012 в 12:52.
Wwormka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DataModule.OnCreate Diablas Общие вопросы Delphi 0 02.08.2010 18:12
Перехват события OnClick элемента СheckBox Ayubkhon Общие вопросы Delphi 1 31.05.2010 12:44
Перехват события нажатия мышки в любой области экрана _Zergatul Win Api 10 06.07.2009 16:29
Проверка событий в onCreate Михаил Юрьевич Общие вопросы Delphi 5 12.06.2008 13:17
Перехват события juden Общие вопросы Delphi 5 23.05.2007 12:21