Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 2002.12.26;
Завантажити: [xml.tar.bz2];

Вниз

Властивості форми, породженої від TForm в інспекторові об'єктів. Знайти схожі гілки


AVR   (2002-12-14 11:44) [0]

Возможно смешной вопрос, но ответа не нашел. Как отобразить новое свойство новой формы TMyForm в инспекторе объектов ?


Type
TfrmDirEdit = class(TForm)
...
private
FRelations : TStrings;
procedure SetRelations ( ARelations : TStrings );
published
property Relations : TStrings
read FRelations
write SetRelations;
end;

Implementation

procedure TfrmDirEdit.SetRelations (
ARelations : TStrings );
begin
FRelations.Assign(ARelations);
end;


Всё работает в RunTime, а в Инспекторе объектов свойства Relations не видно. Такая же конструкция в новом
компоненте TMyComponent, порождённом от TComponent
хорошо работает и в инспекторе объектов свойство Relations
видно. Как отобразить свойство формы в Инспекторе?



Юрий Зотов   (2002-12-14 12:36) [1]

Для этого форму нужно зарегистрировать вызовом RegisterCustomModule. Добавленные свойства появятся в ее потомках.

Скачайте с сайта Сергея Орлика
http://www.geocities.com/SiliconValley/Way/9006/index_r.html
его эксперт CCPack50. С его помощью Вы легко решите задачу.

Объект FRelations надо создать в конструкторе и уничтожить в деструкторе формы.



AVR   (2002-12-14 14:49) [2]

Не ставится этот эксперт на D6.
Я посмотрел в исходники.
Возник вопрос: что такое RegisterCustomModuleProc?
Что выполняет эта процедура?



Юрий Зотов   (2002-12-14 15:21) [3]

Что она делает - это целую лекцию по IDE писать нужно, причем не маленькую.

Спробуйте ось що.

1. Из модуля MyFormUnit с Вашей формой TMyForm уберите строку {$R *.DFN}.

2. Поместите этот модуль в любой design-time пакет, а в его процедуре Register сделайте вызов:
RegisterCustomModule(TMyForm, TCustomModule);

Затем, когда будете создавать новую форму, то сразу после ее создания ручками подправьте ее код в 2-х местах:

використовує
..., MyFormUnit;

тип
TForm1 = class(TMyForm);
...

По идее, это должно позволить обойтись и без эксперта.



AVR   (2002-12-16 11:31) [4]

Спасибо за потраченное на меня время.
Ничего так и не получилось. Я надеялся, что
есть простой способ или я что-то неправильно
делаю. Вы не могли бы просто дать ссылку на
источник, где можно получить информацию по
данному вопросу - буду разбираться, со временем
всё получится.



Calm   (2002-12-16 11:45) [5]

Я вот тоже хотел как-то решить аналогичную задачу, и тоже ничего не вышло. Не просто это - использовать RegisterCustomModuleProc, а литературы на эту тему я не видел. А хотелось бы увидеть...



Юрий Зотов   (2002-12-17 00:05) [6]

> AVR © (16.12.02 11:31)

Что конкретно не получается? Давайте разберемся вместе, должно получиться.


> Calm © (16.12.02 11:45)

Да, это не очень просто (по сути, это уже программирование самой среды, что считается как бы вершиной знания Delphi). И документации действительно очень мало.

Но разобраться, тем не менее можно. Для начала советую посмотреть каталоги ($DELPHI)\Source\ToolsAPI и ($DELPHI)\Demos\ToolsAPI. Далее - ищите все, что касается OTAPI (Open Tools API).

Хотя я считаю, что браться за такие вещи может тот, кто уже свободно владеет написанием компонентов и их редакторов. Иначе рановато - еще нет нужной базы. Но это лишь мое мнение (впрочем, не только мое).



Набережных С.   (2002-12-17 01:51) [7]

Объяснять тут, действительно, долго. Но, может на примере будет проще.

unit SuperFormExp;

interface

uses
Windows, SysUtils, Classes, Dialogs,
ToolIntf, ExptIntf, Menus, VirtIntf,
EditIntf, IStreams;

type
TSuperFormExp = class(TIExpert)
private
public
function GetAuthor: string;override;
function GetStyle: TExpertStyle; override;
function GetState: TExpertState; override;
function GetMenuText: string; override;
function GetGlyph: HICON; override;
function GetPage: string; override;
function GetIDString: string; override;
function GetComment: string;override;
function GetName: string;override;
procedure Execute; override;
end;

procedure Register;

implementation

uses
DesignEditors, DesignIntf, Proxies, SuperForm;

procedure Register;
begin
RegisterCustomModule(TSuperForm, TCustomModule);
RegisterLibraryExpert(TSuperFormExp.Create);
end;

const
Template =
"unit %s;"+#13#10+
#13#10+
"interface"+#13#10+
#13#10+
"uses"+#13#10+
" Windows, Messages, SysUtils, Variants,"+#13#10+
" Classes, Graphics, Controls, Forms,"+#13#10+
" Dialogs;"+#13#10+
#13#10+
"type"+#13#10+
" TSuperForm%s = class(TSuperForm)"+#13#10+
" private"+#13#10+
" { Private declarations }"+#13#10+
" public"+#13#10+
" { Public declarations }"+#13#10+
" end;"+#13#10+
#13#10+
"implementation"+#13#10+
#13#10+
"{$R *.dfm}"+#13#10+
#13#10+
"{ TSuperForm%s }"+#13#10+
#13#10+
"end."+#13#10;


{ TSuperFormExp }

procedure TSuperFormExp.Execute;
var
Frm: TSuperForm;
UID,UName,FID,ID,Source: string;
UnitStm, FormStm: TIMemoryStream;
StmF, StmU: TMemoryStream;
begin
Frm:=TSuperForm.Create(nil);
ToolServices.GetNewModuleName(UID,UName);
ID:=Copy(UID,5,Length(UID));
FID:="SuperForm"+ID;
CreateSubClass(Frm,"T"+FID,TSuperForm);
StmF:=TMemoryStream.Create;
StmF.WriteComponentRes(FID,Frm);
Frm.Free;
FormStm:=TIMemoryStream.Create(StmF,soOwned);
Source:=Format(Template,[UID, ID, ID]);
StmU:=TMemoryStream.Create;
StmU.Write(Source[1],Length(Source));
UnitStm:=TIMemoryStream.Create(StmU,soOwned);
ToolServices.CreateModule(UName,UnitStm,FormStm,[cmAddToProject,cmShowSource,cmShowForm,cmUnNamed,cmMarkModified]);
end;

function TSuperFormExp.GetAuthor: string;
begin
Result:="AVR mailto:brat_andrew@mail.ru";
end;

function TSuperFormExp.GetComment: string;
begin
Result:="No comment";
end;

function TSuperFormExp.GetGlyph: HICON;
begin
Result:=0;
end;

function TSuperFormExp.GetIDString: string;
begin
Result:="AVR.SuperFormExp";
end;

function TSuperFormExp.GetMenuText: string;
begin
Result:="";
end;

function TSuperFormExp.GetName: string;
begin
Result:="SuperForm Expert";
end;

function TSuperFormExp.GetPage: string;
begin
Result:="AVR forms";
end;

function TSuperFormExp.GetState: TExpertState;
begin
Result:=[esEnabled];
end;

function TSuperFormExp.GetStyle: TExpertStyle;
begin
Result:=esForm;
end;

end.




сторінки: 1 вся гілка

Форум: "Основна";
Поточний архів: 2002.12.26;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.59 MB
Час: 0.027 c
6-86069
urich
2002-10-29 17:28
2002.12.26
Upload по http використовую WinInet


1-85969
barmaley
2002-12-15 18:32
2002.12.26
сепарація тексту:)


14-86161
уран
2002-12-06 16:53
2002.12.26
Звідки можна завантажити програму DMFC, для читання цього форуму?


3-85805
Мішель
2002-12-06 11:12
2002.12.26
Як впорядкувати запит об'єднаний через UNION


1-86020
Новачок
2002-12-16 15:08
2002.12.26
Ребята помогите! Срочно !!! Горю по курсової !!!





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська