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

Вниз

Как реализовать такой код на KOL?   Найти похожие ветки 

 
Alexander ©   (2002-12-29 21:47) [0]


protected
( var Params: TCreateParams)

protected
procedure CreateParams(var Params: TCreateParams); override;

и там я задаю родителя для формы.

В общем как мне задать родителя формы до её создания (Params.WndParent).


 
Gandalf   (2002-12-31 10:32) [1]

Это вообще, про KOL? Все создания объектов в KOL сделаны только через New***, тебе значит надо сделать свой NewFormParams(var Params: TCreateParams);.


 
Alexander ©   (2003-01-04 08:58) [2]

Это так я делаю в Delphi - хранитель экрана с превьюшкой (форма предварительного просмотра). Для этой формы задаётся родитель. Для KOL я пытаюсь делать так:


Arg := UpperCase(ParamStr(1));

if (Copy(Arg,1,2) = "/A") or (Copy(Arg,1,2) = "-A") or (Copy(Arg,1,1) = "A") then
SSMode := ssSetPwd;

if (Copy(Arg,1,2) = "/P") or (Copy(Arg,1,2) = "-P") or (Copy(Arg,1,1) = "P") then
SSMode := ssPreview;

if (Copy(Arg,1,2) = "/C") or (Copy(Arg,1,2) = "-C") or (Copy(Arg,1,1) = "C") or (Arg = "") then
SSMode := ssConfig;

if (SSMode = ssRun) or (SSMode = ssPreview) then
begin
NewFormSaver(FormSaver, nil);

if (SSMode = ssPreview) then
begin
ParentHandle := Str2Int(ParamStr(2));
GetWindowRect(ParentHandle, ParentRect);

SetWindowLong(FormSaver.Form.Handle, GWL_STYLE, WS_CHILD or WS_VISIBLE);
SetWindowLong(FormSaver.Form.Handle, GWL_EXSTYLE,
GetWindowLong(FormSaver.Form.Handle, GWL_EXSTYLE) and not WS_EX_APPWINDOW or WS_EX_TOOLWINDOW);

SetParent(FormSaver.Form.Handle, ParentHandle);

// FormSaver.Form.Left := 0;
// FormSaver.Form.Top := 0;
// FormSaver.Form.Width := ParentRect.Right - ParentRect.Left;
// FormSaver.Form.Height := ParentRect.Bottom - ParentRect.Top;
end;

( FormSaver.Form)
Это так я делаю в Delphi - хранитель экрана с превьюшкой (форма предварительного просмотра). Для этой формы задаётся родитель. Для KOL я пытаюсь делать так:


Arg := UpperCase(ParamStr(1));

if (Copy(Arg,1,2) = "/A") or (Copy(Arg,1,2) = "-A") or (Copy(Arg,1,1) = "A") then
SSMode := ssSetPwd;

if (Copy(Arg,1,2) = "/P") or (Copy(Arg,1,2) = "-P") or (Copy(Arg,1,1) = "P") then
SSMode := ssPreview;

if (Copy(Arg,1,2) = "/C") or (Copy(Arg,1,2) = "-C") or (Copy(Arg,1,1) = "C") or (Arg = "") then
SSMode := ssConfig;

if (SSMode = ssRun) or (SSMode = ssPreview) then
begin
NewFormSaver(FormSaver, nil);

if (SSMode = ssPreview) then
begin
ParentHandle := Str2Int(ParamStr(2));
GetWindowRect(ParentHandle, ParentRect);

SetWindowLong(FormSaver.Form.Handle, GWL_STYLE, WS_CHILD or WS_VISIBLE);
SetWindowLong(FormSaver.Form.Handle, GWL_EXSTYLE,
GetWindowLong(FormSaver.Form.Handle, GWL_EXSTYLE) and not WS_EX_APPWINDOW or WS_EX_TOOLWINDOW);

SetParent(FormSaver.Form.Handle, ParentHandle);

// FormSaver.Form.Left := 0;
// FormSaver.Form.Top := 0;
// FormSaver.Form.Width := ParentRect.Right - ParentRect.Left;
// FormSaver.Form.Height := ParentRect.Bottom - ParentRect.Top;
end;

Run(FormSaver.Form);
end;


Это начинает работать, то есть моя форма показывается в окошке предварительного просмотра, но после этого прекращается переключение по сисмемным табам (на Фон, Оформление и т.д).



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

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

Наверх




Память: 0.47 MB
Время: 0.022 c
1-33650
dimon
2003-08-30 13:47
2003.09.11
Масштабирование приложения


14-33755
Экселенц
2003-08-24 07:26
2003.09.11
бесплатный helpmaker


1-33687
Perekrestok
2003-08-29 13:51
2003.09.11
Интерфейс как у дисков с софтом AlexSoft


1-33575
gedd@mail.ru
2003-08-28 17:52
2003.09.11
Кнопка в стиле IE


1-33642
Islander
2003-08-30 21:27
2003.09.11
Как грамотно уничтожить форму, чтобы освободилась память?