Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
ВнизОкно диалога изменяемого размера Найти похожие ветки
← →
Karlusha (2002-06-05 17:58) [0]Опять поднимаю эту тему. Нужно сделать окно диалога (BorderStyle =
bsDialog) изменяемого размера. Я уже пробовал и в CreateParams делать
Style := Style or WS_SIZEBOX и обрабатывать WM_NCHITTEST, с
присвоением Result = HTTOP и т.д. Но это все работает для любого
BorderStyle, но только не для bsDialog. Помогите ПЛЗ. Ну нмкак не
получается. Может есть у кого идеи на єтот счет.
← →
Romkin (2002-06-06 11:52) [1]Не понятно, что конкретно надо - bsDialog отличается от bsSizable только невозможностью менять размер...
Может, это?
procedure TFormDlg.CreateParams(var Params: TCreateParams);
begin
inherited;
with params do
begin
Style := Style - DS_MODALFRAME;
ExStyle := 0;
AddBiDiModeExStyle(ExStyle);
end;
end;
← →
Игорь Шевченко (2002-06-06 12:06) [2]Вот что сделал я: -)
unit Dialog;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm2 = class(TForm)
private
{ Private declarations }
procedure WMNCCreate(var Message : TWMNCCreate); message WM_NCCREATE;
protected
procedure CreateParams(var Params : TCreateParams); override;
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
{ TForm2 }
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style OR WS_SIZEBOX;
end;
procedure TForm2.WMNCCreate(var Message: TWMNCCreate);
begin
inherited;
GetSystemMenu (Handle, true);
end;
end.
Выглядит как bsDialog, но можно изменять размеры
С уважением,
← →
Игорь Шевченко (2002-06-06 12:18) [3]Маленькое дополнение для кошерности: :-)
procedure TForm2.WMNCCreate(var Message: TWMNCCreate);
var
SysMenu : HMENU;
begin
inherited;
GetSystemMenu (Handle, true);
SysMenu := GetSystemMenu (Handle, false);
DeleteMenu(SysMenu, SC_TASKLIST, MF_BYCOMMAND);
DeleteMenu(SysMenu, 7, MF_BYPOSITION);
DeleteMenu(SysMenu, 5, MF_BYPOSITION);
DeleteMenu(SysMenu, SC_MAXIMIZE, MF_BYCOMMAND);
DeleteMenu(SysMenu, SC_MINIMIZE, MF_BYCOMMAND);
DeleteMenu(SysMenu, SC_RESTORE, MF_BYCOMMAND);
end;
← →
Karlusha (2002-06-06 13:29) [4]Огромное спасибо Игорь Шевченко. Твой вариант просто идеально мне подошел. Сделал некоторые поправки и окно получилось диалоговым, но с полным функционалом обычного. СПАСИБО
← →
Игорь Шевченко (2002-06-06 13:38) [5]А что за поправки ?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c