Вниз
Скачать: 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.989 c
1-55177
mazepa
2002-06-03 19:11
2002.06.17
массив 50М


7-55329
Barmutik
2002-03-19 17:18
2002.06.17
Как передать объект класса TBitmap


3-54987
Browko Dmitrey
2002-05-22 18:24
2002.06.17
Глюк с Parameters в TADOQuery


1-55107
DenNNis
2002-06-06 08:17
2002.06.17
PageControl


8-55234
dmitriyk
2002-01-31 03:22
2002.06.17
Как качественно перевести цветную картинку в черно-белую




   Наверх