Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-55275
Alibaba
2002-05-14 18:20
2002.06.17
Word - Excel


3-55030
VikOs
2002-05-23 14:23
2002.06.17
Перекачка


1-55097
Ray_Parker
2002-06-02 20:43
2002.06.17
Вопрос по TTimer


14-55301
Alexandr
2002-05-15 11:31
2002.06.17
Decompress UPX


8-55232
OlegGo
2002-02-02 10:30
2002.06.17
Помогите разобраться с JPEG





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский