Редактор формы run-time

Статус
Закрыто для дальнейших ответов.

dmitrigan

New member
Регистрация
01.05.2007
Сообщения
10
Реакции
0
Баллы
1
Возраст
47
Местоположение
Ставрополь
Всем привет!
Есть ли что то готовое для добавления своему приложению на Дельфях визуального редактора формы? ну там набросать компонентов, можно даже без обработчиков событий.. сохранить -загрузить ... и т.п.
если есть примеры, буду очень благодарен.
 

LenockaSeconka

Well-known member
Команда форума
Moderator
Premium
Регистрация
11.06.2007
Сообщения
319
Реакции
451
Баллы
63
Местоположение
Минск
Native language | Родной язык
Русский
Книга одна есть там все эти примеры описаны
 

wserg

New member
Регистрация
22.09.2007
Сообщения
1
Реакции
0
Баллы
1
Native language | Родной язык
Русский

LenockaSeconka

Well-known member
Команда форума
Moderator
Premium
Регистрация
11.06.2007
Сообщения
319
Реакции
451
Баллы
63
Местоположение
Минск
Native language | Родной язык
Русский
Всем привет!
Есть ли что то готовое для добавления своему приложению на Дельфях визуального редактора формы? ну там набросать компонентов, можно даже без обработчиков событий.. сохранить -загрузить ... и т.п.
если есть примеры, буду очень благодарен.

Автора вспомнил
Марко Канту

Книга по-моему delphi для профессионалов
Там глава посвящена это все описано хоршо

У меня старая редакция и она дома (поэтому с названием могу ошибаться) если еще интересно будет скину название
 

mike.alimov

New member
Регистрация
13.08.2013
Сообщения
15
Реакции
2
Баллы
3
Местоположение
Ташкент
Form Designer от greatis.com попробуйте, правда он платный, но его можно найти и бесплатно
 

eflc

Premium
Premium
Регистрация
17.07.2010
Сообщения
4
Реакции
2
Баллы
3
Возраст
36
Native language | Родной язык
Русский
Если у кого-нибудь есть ссылочка, буду багодарен :)
 

LenockaSeconka

Well-known member
Команда форума
Moderator
Premium
Регистрация
11.06.2007
Сообщения
319
Реакции
451
Баллы
63
Местоположение
Минск
Native language | Родной язык
Русский

rodnikzdorovya

New member
Регистрация
01.10.2009
Сообщения
21
Реакции
13
Баллы
3
Возраст
54
Native language | Родной язык
Русский
вот такой код я использую для подгрузки DFM
раньше был очень короткий но заглючил с девками

поэтому пришлось чуть поменять дельфовскуй исходную InitInheritedComponent1

constructor TForm11.Create(AOwner: TComponent); // override;

Inherited CreateNew(AOwner);
if (ClassType <> TForm11) and not(csDesigning in ComponentState) then
if not InitInheritedComponent1(Self, TForm) then
raise EResNotFound.CreateFmt('TForm11 res', [ClassName]);

OldCreateOrder := False;



function InternalReadComponentRes1(const ResName: UnicodeString;
HInst: THandle; var Instance: TComponent): Boolean; overload;
var
HRsrc: THandle;
begin { avoid possible EResNotFound exception }
if HInst = 0 then
HInst := HInstance;
HRsrc := FindResourceW(HInst, PWideChar(ResName), PWideChar(RT_RCDATA));
Result := HRsrc <> 0;
if not Result then
Exit;

with TResourceStream.Create(HInst, ResName, RT_RCDATA) do
try
Instance := ReadComponent(Instance);
finally
Free;
end;
Result := True;
end;

function ReadFromDFM(filename: UnicodeString;
var Instance: TComponent): Boolean;
var
fs: TFileStream;
Buffer: array [0 .. 0] of Byte;
ms: TMemoryStream;
begin
fs := TFileStream.Create(filename, fmOpenRead);

fs.Read(Buffer, 1); // read the first 4 bytes
fs.Seek(0, 0);

if Buffer[0] <> $FF then
begin // is it a DFM resource?
ms := TMemoryStream.Create;

ObjectTextToBinary(fs, ms);

ms.Seek(0, soFromBeginning);
ms.ReadComponent(Instance);
ms.Free;
fs.Free;
end
else
begin
fs.Free;
ReadComponentResFile(filename, Instance);
end;
end;

function InitInheritedComponent1(Instance: TComponent;
RootAncestor: TClass): Boolean;

function InitComponent1(ClassType: TClass): Boolean;
begin
Result := False;
if (ClassType = TComponent) or (ClassType = RootAncestor) then
Exit;
Result := InitComponent1(ClassType.ClassParent);

if ClassType.ClassParent.ClassParent = TForm11 then
Result := ReadFromDFM( ClassType.UnitName + '.dfm',

Instance) or Result
else
Result := InternalReadComponentRes1(ClassType.ClassName,
FindResourceHInstance(FindClassHInstance(ClassType)), Instance)
or Result;

end;

var
LocalizeLoading: Boolean;
begin
GlobalNameSpace.BeginWrite; // hold lock across all ancestor loads (performance)
try
LocalizeLoading := (Instance.ComponentState * [csInline, csLoading]) = [];
if LocalizeLoading then
BeginGlobalLoading; // push new loadlist onto stack
try
Result := InitComponent1(Instance.ClassType);
if LocalizeLoading then
NotifyGlobalLoading; // call Loaded
finally
if LocalizeLoading then
EndGlobalLoading; // pop loadlist off stack
end;
finally
GlobalNameSpace.EndWrite;
end;
end;
 

margoKapa

New member
Регистрация
17.11.2011
Сообщения
8
Реакции
1
Баллы
3
Очень рекомендую такую разработку:
- работает замечательно. Удобно что можно без перезапуска клиента накатывать обновления на систему.
 

test-593

New member
Регистрация
03.12.2014
Сообщения
4
Реакции
0
Баллы
1
LMD DesignPack еще такое позволяет
 
Статус
Закрыто для дальнейших ответов.
197 143Темы
634 113Сообщения
3 618 350Пользователи
LizzatransНовый пользователь
Верх