Показать полную графическую версию : [решено] Проблема с видом формы
Malfatto
22-05-2011, 20:19
В общем, нужно сделать форму вот такого вида:
http://s57.radikal.ru/i156/1105/2d/04e583b63583.jpg
Перепробовал разные варианты, похожий результат даёт лишь это:
BorderStyle = bsNone;
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style:=Params.Style or (WS_THICKFRAME or WS_DLGFRAME);
end;
Однако, при этом размер самой формы можно менять (появляются стрелочки при наведение на края). Как сделать так, чтобы размер формы при этом нельзя было менять?
BorderStyle = bsNone; »
при установке этого свойства размер формы не меняется!
Не особо понятно почему у Вас появляются стрелочки изменения размера.
Malfatto
22-05-2011, 20:44
LilLoco, Вы код посмотрите...
А почему бы просто не сделать через то свойство?
Malfatto
22-05-2011, 21:07
LilLoco, там на выбор только bsNone, bsSingle, bsSizeable, bsSizeToolWin и bsToolWindow. того что мне надо, понятное дело, нету.
Все, я понял ,что Вам нужно! Сразу не дошло :(
Ну так WS_THICKFRAME добавляет возможность изменять размеры формы.
Malfatto
22-05-2011, 21:45
LilLoco, так ведь с помощью него и делается эта рамка. вот я и спрашиваю, может есть другие способы? :)
А если как-нибудь задать максимальный и минимальный размер формы. Это никак не изменит ситуацию?
Malfatto
22-05-2011, 21:53
LilLoco, да, я уже так и решал эту проблему. однако, при наведении на края появляются стрелочки, что выглядит очень некрасиво :)
скриншот в первом посте - из стандартной программы Windows 7, и как раз в ней нельзя менять размер окна.
при наведении на края появляются стрелочки, что выглядит очень некрасив »
Согласен, не только некрасиво, но и сбивает с толку)
По-любому как то можно, нужно просто наверное поиграть с флагами отображения!
Блин, тоже заинтересовал этот вопрос, никогда до этого не сталкивался с этим!)
Можно так (Delphi 7).
Ставим BorderStyle -> bsSingle
private
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
if ((Msg.CmdType and $FFF0) = SC_SIZE) then
begin
Msg.Result := 0;
Exit;
end;
inherited;
end;
Malfatto
23-05-2011, 01:49
opel431, к сожалению, не помогло :(
opel431, к сожалению, не помогло »
В Delphi 7 + XP все работает.
Тогда смотрите WM_NCHITTEST (HTBOTTOM, HTBOTTOMLEFT, HTBOTTOM, HTTOP, HTOPLEFT и HTTOPRIGHT).
Я, вообще сразу не посмотрел на скрин, и поэтому дал процедуру на запрет изменения формы.
Cделайте форму без Caption.
Malfatto
23-05-2011, 02:08
opel431, простите, а что Ваш код вообще должен делать? Просто не силён я в этих "мессаджах"... Он должен, я так понимаю, запретить изменение размеров формы? Или он именно меняет стиль формы как в первом посте?
он именно меняет стиль формы как в первом посте? »
Я, ориентировался на ваш диалог, о запрете изменения размеров формы = "убрать стрелки".
Форма без Caption!
procedure CreateParams(var Params: TCreateParams); override;
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited Createparams(Params);
with Params do
Style := (Style or WS_POPUP) and not WS_DLGFRAME;
end;
Malfatto
23-05-2011, 03:19
opel431, хм, также не помогло. остаётся лишь рамка шириной 1 пиксель, а не то, что в 1 посте.
акже не помогло. остаётся лишь рамка шириной 1 пиксель, а не то, что в 1 посте. »
Для этого у формы и панелей есть свойство BorderWidth.
Ладно! Сейчас по быстрому пример набросаю и выложу.
Malfatto
23-05-2011, 15:42
opel431, всё равно непохоже на то, что надо :)
opel431, всё равно непохоже на то, что надо »
Спасибо, за потраченное на меня время!
Malfatto
23-05-2011, 16:47
Спасибо, за потраченное на меня время! »
=D да, спасибо конечно. просто уже довольно долго пытаюсь решить проблему, забываю говорить всем "спасибо".
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.