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

Вниз

Окно диалога изменяемого размера   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
1-55064
SleD
2002-06-02 14:13
2002.06.17
Насчёт КРУГЛЫХ картинок


3-55000
rvs
2002-05-22 12:53
2002.06.17
Вопрос по Focus в GRID от Чайника


7-55330
TriNeT
2002-03-21 06:13
2002.06.17
Проблема с установкой Delphi 5 под Win2K Professional


3-54973
AJ blacksmith
2002-05-13 18:39
2002.06.17
Работа с датой


1-55138
Goblinus
2002-06-03 23:23
2002.06.17
Преобразование из Char в Integer и обратно