Войти

Показать полную графическую версию : [решено] Проблема с видом формы


Страниц : [1] 2

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;

Однако, при этом размер самой формы можно менять (появляются стрелочки при наведение на края). Как сделать так, чтобы размер формы при этом нельзя было менять?

LilLoco
22-05-2011, 20:30
BorderStyle = bsNone; »
при установке этого свойства размер формы не меняется!

Не особо понятно почему у Вас появляются стрелочки изменения размера.

Malfatto
22-05-2011, 20:44
LilLoco, Вы код посмотрите...

LilLoco
22-05-2011, 20:52
А почему бы просто не сделать через то свойство?

Malfatto
22-05-2011, 21:07
LilLoco, там на выбор только bsNone, bsSingle, bsSizeable, bsSizeToolWin и bsToolWindow. того что мне надо, понятное дело, нету.

LilLoco
22-05-2011, 21:20
Все, я понял ,что Вам нужно! Сразу не дошло :(

Ну так WS_THICKFRAME добавляет возможность изменять размеры формы.

Malfatto
22-05-2011, 21:45
LilLoco, так ведь с помощью него и делается эта рамка. вот я и спрашиваю, может есть другие способы? :)

LilLoco
22-05-2011, 21:49
А если как-нибудь задать максимальный и минимальный размер формы. Это никак не изменит ситуацию?

Malfatto
22-05-2011, 21:53
LilLoco, да, я уже так и решал эту проблему. однако, при наведении на края появляются стрелочки, что выглядит очень некрасиво :)

скриншот в первом посте - из стандартной программы Windows 7, и как раз в ней нельзя менять размер окна.

LilLoco
22-05-2011, 22:05
при наведении на края появляются стрелочки, что выглядит очень некрасив »
Согласен, не только некрасиво, но и сбивает с толку)

По-любому как то можно, нужно просто наверное поиграть с флагами отображения!

Блин, тоже заинтересовал этот вопрос, никогда до этого не сталкивался с этим!)

opel431
23-05-2011, 01:18
Можно так (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
23-05-2011, 02:00
opel431, к сожалению, не помогло »
В Delphi 7 + XP все работает.

Тогда смотрите WM_NCHITTEST (HTBOTTOM, HTBOTTOMLEFT, HTBOTTOM, HTTOP, HTOPLEFT и HTTOPRIGHT).

Я, вообще сразу не посмотрел на скрин, и поэтому дал процедуру на запрет изменения формы.
Cделайте форму без Caption.

Malfatto
23-05-2011, 02:08
opel431, простите, а что Ваш код вообще должен делать? Просто не силён я в этих "мессаджах"... Он должен, я так понимаю, запретить изменение размеров формы? Или он именно меняет стиль формы как в первом посте?

opel431
23-05-2011, 02:17
он именно меняет стиль формы как в первом посте? »
Я, ориентировался на ваш диалог, о запрете изменения размеров формы = "убрать стрелки".

Форма без 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 посте.

opel431
23-05-2011, 03:21
акже не помогло. остаётся лишь рамка шириной 1 пиксель, а не то, что в 1 посте. »
Для этого у формы и панелей есть свойство BorderWidth.

Ладно! Сейчас по быстрому пример набросаю и выложу.

Malfatto
23-05-2011, 15:42
opel431, всё равно непохоже на то, что надо :)

opel431
23-05-2011, 16:27
opel431, всё равно непохоже на то, что надо »
Спасибо, за потраченное на меня время!

Malfatto
23-05-2011, 16:47
Спасибо, за потраченное на меня время! »
=D да, спасибо конечно. просто уже довольно долго пытаюсь решить проблему, забываю говорить всем "спасибо".




© OSzone.net 2001-2012