Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
14-55296
VID
2002-05-14 02:40
2002.06.17
Прогу посмотрим ? :)


6-55259
Timon
2002-04-05 13:08
2002.06.17
TCP пакет


14-55286
tsarevep
2002-05-13 11:53
2002.06.17
Не совсем по Delphi но рядом


1-55057
Milg
2002-06-05 14:53
2002.06.17
Как узнать высоту Task Bar’а?


1-55165
Redhot
2002-06-04 15:33
2002.06.17
Как в Tstringlist’е отобразить список файлов из директории?




   Наверх