Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

Как сменить наследника у фрейма с .dfm-файлом   Найти похожие ветки 

 
Smithson ©   (2002-11-29 11:10) [0]

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


 
Smithson ©   (2002-11-29 12:48) [1]

Ну товарищи!


 
Skier ©   (2002-11-29 13:04) [2]

>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;


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

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


 
Smithson ©   (2002-11-29 14:34) [4]

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

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


 
Smithson ©   (2002-11-30 12:20) [5]

И все-так фигня.
При компиляции проекта в .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



Страницы: 1 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
1-27984
Alex_pv
2002-11-29 17:29
2002.12.09
Конвертация данных


3-27828
Виталий Викторович Яничкин
2002-11-14 21:01
2002.12.09
отлавливание событий InterBase


1-28104
Damage
2002-11-26 22:35
2002.12.09
fsStayOnTop не работает?


3-27805
DiamondA
2002-11-22 07:39
2002.12.09
InterBase and TerminalService??????????


1-28064
Карлсон
2002-11-27 17:51
2002.12.09
зеркальное отображение курсора.