Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сменить наследника у фрейма с .dfm-файлом [D5, Win95/98, NT4, WinXP]


Smithson ©   (2002-11-29 11:10:00) 

Вопрос следующий: Есть n фреймов, полученных командой File->New Frame. Они отлажены и отлично работают в проекте. Теперь возникла необходимость подвести их все к одному предку (наследнику от TFrame, имеющему некую общую для них всех функциональность). Просто смена наследника в модуле блокируется Delphi. Как это можно сделать?


Smithson   (2002-11-30 12:20:00) [1]

И все-так фигня.
При компиляции проекта в .dfm модуль Delphi пихает массу всяких полей, исполнимый файл компилится, а потом при попытке использовать такой фрэйм возникает исключение "неизвестное свойство OldCreateOrder".


// Описание самого фрэйма
TFrameRegisterWare = class(TSmithFrame)
Label1: TLabel;
EmpList: TComboBox;
Label2: TLabel;
WareList: TComboBox;
Label3: TLabel;
Inventar: TEdit;
ButtonFindFreeInv: TSpeedButton;
Label4: TLabel;
Serial: TEdit;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Room: TEdit;
StatusList: TComboBox;
Info: TMemo;
Label8: TLabel;
Billing: TEdit;
Label9: TLabel;
BillDate: TEdit;
procedure EmpListChange(Sender: TObject);
procedure WareListChange(Sender: TObject);
procedure ButtonFindFreeInvClick(Sender: TObject);
procedure SerialExit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
FBillID: String;

Procedure Init; override; // инициализация фрейма
Procedure Start(cBill: String); // инициализация фрейма, cBill - номер по таблице BillItem
Procedure AddData; // Регистрирует вещь в warehouse
end;

// Цитата из dfm файла

object FrameRegisterWare: TFrameRegisterWare
Left = 0
Top = 0
Width = 455
Height = 291
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = True /// Откуда это гавно???
PixelsPerInch = 96
TextHeight = 13


Smithson   (2002-11-29 14:34:00) [2]

Мда. Спасибо. Вчера при попытке сменить предка и откомпилировать говорило "несовпадение типов" на строку class(TBaseFrame). Сегодня прошло на ура. Видимо, надо хоть изредка перегружать машину.

Спасибо за помощь!


Skier   (2002-11-29 13:08:00) [3]

>Smithson
>Теперь возникла необходимость подвести их все к одному предку
Тебе нужно наследоваться свой "главный" класс-предок и наследоваться уже от него, обзови его TBaseFrame и дальше
TFrame1 = class(TBaseFrame)
TFrame2 = class(TBaseFrame)
и т.д.


Skier   (2002-11-29 13:04:00) [4]

>Smithson

> Просто смена наследника в модуле блокируется Delphi.


Вот это штука прекрасно работает !
В чём проблема-то ?

unit Unit2;

TFrame2 = class(TFrame)
private
{ Private declarations }
public
{ Public declarations }
end;

//.............................................

unit Unit3;

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

type
TFrame3 = class(TFrame2)
private
{ Private declarations }
public
{ Public declarations }
end;


Smithson   (2002-11-29 12:48:00) [5]

Ну товарищи!


Наверх

Титульная страница Поиск, карта сайта Написать письмо