Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Проблема с видом формы

Ответить
Настройки темы
Delphi - [решено] Проблема с видом формы

Аватара для Malfatto

Storm Spirit


Сообщения: 467
Благодарности: 33


Конфигурация

Профиль | Отправить PM | Цитировать


В общем, нужно сделать форму вот такого вида:



Перепробовал разные варианты, похожий результат даёт лишь это:

BorderStyle = bsNone;

Код: Выделить весь код
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style:=Params.Style or (WS_THICKFRAME or WS_DLGFRAME);
end;
Однако, при этом размер самой формы можно менять (появляются стрелочки при наведение на края). Как сделать так, чтобы размер формы при этом нельзя было менять?

Отправлено: 20:19, 22-05-2011

 

Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата Malfatto:
забываю говорить всем "спасибо »
А спрашивать не забываете? ....элементарная норма поведения воспитанного человека. Кстати для этого существует кнопка. Ну да я не об этом.
В примере решены вопросы которые вы ставили (отсутствие Caption, отсутствие резинового контура, отсутствие возможности изменять размер и изменение вида курсора). Просто, у вас большое желание видеть скругленные края - воспользуйтесь API функцией CreateRoundRectRgn. Добавьте возможность перетаскивать форму за поле и т.д. И оформите интерфейс как вам нужно.

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Отправлено: 17:32, 23-05-2011 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Malfatto

Storm Spirit


Сообщения: 467
Благодарности: 33

Профиль | Отправить PM | Цитировать


opel431, наверное, это моя вина, что я недостаточно ясно высказал то, что мне нужно.

в скриншоте в 1 посте показано, как должна выглядеть форма. такого вида можно добиться только на Windows 7 и Vista, на XP в любом случае такого эффекта не получить. то, чего мне нужно было, я почти добился. а именно, с помощью кода из первого поста я получил форму вот такого вида:



также я запретил изменение размера окна (кстати, ваше решение с WM_SYSCOMMAND оказалось более рационално, использую сейчас его). единственное, что сбивает с толку, так это курсор, который меняется на "растягивающий" при наведение на края формы.

собственно, в этом и состоял вопрос. как убрать изменение курсора, ну или найти другой способ изменить стиль формы, чтобы она была как на скриншоте из первого поста.

Последний раз редактировалось Malfatto, 23-05-2011 в 18:55. Причина: перепутал теги


Отправлено: 18:55, 23-05-2011 | #22


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата Malfatto:
собственно, в этом и состоял вопрос. как убрать изменение курсора »
Я, приводил вам пример при BorderStyle=bsSingle

private
{ Private declarations }
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;

public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); override;
end;


// запретить Caption
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited Createparams(Params);
with Params do
Style := (Style or WS_POPUP) and not WS_DLGFRAME;
end;

// запретить изменение размера
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
if ((Msg.CmdType and $FFF0) = SC_SIZE) then
begin
Msg.Result := 0;
Exit;
end;
inherited;
end;

//Форму возможно придется "перемещать", но как?
// например при нажатии на панели)
procedure TForm1.Panel4MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012;
begin
ReleaseCapture;
Form1.Perform(WM_SysCommand, SC_DragMove, 0);
end;

Дерзайте!

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Последний раз редактировалось opel431, 23-05-2011 в 19:17.


Отправлено: 19:03, 23-05-2011 | #23


Аватара для Malfatto

Storm Spirit


Сообщения: 467
Благодарности: 33

Профиль | Отправить PM | Цитировать


opel431, я ведь уже говорил, что при если использовать
Код: Выделить весь код
Params.Style:=(Params.Style or WS_POPUP) and not WS_DLGFRAME;
то при этом
Цитата Malfatto:
остаётся лишь рамка шириной 1 пиксель, а не то, что в 1 посте. »

Отправлено: 19:25, 23-05-2011 | #24


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата Malfatto:
то при этом »
На форму панель=Client + BorderWidth=4 + Bevellnner=bvLowered+BevelOuter=bvRaised.

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Отправлено: 19:35, 23-05-2011 | #25


Аватара для Malfatto

Storm Spirit


Сообщения: 467
Благодарности: 33

Профиль | Отправить PM | Цитировать


opel431, я ещё раз говорю, что это даёт совершенно не тот результат. зачем изобретать велосипед, да ещё и с квадратными колёсами?

p.s. опять Вы, видимо, не поняли что мне нужно... и я уже просто не знаю, как я могу разъяснить то, что мне нужно, ещё более грамотно

Отправлено: 19:39, 23-05-2011 | #26


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата Malfatto:
опять Вы, видимо, не поняли что мне нужно... »
Результат


Те же свойства (что в предыдущем посте) есть и у формы, стиль и размер!

Подробно: Форма+Панель
Свойства формы:
BorderWidth=4

Свойства панели (Без этого нет эффекта)
Align=alClient
Bevellnner=bvNone
BevelOuter=bvLowered

Т.е вариации "стиля" зависят от заданных свойств.

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Последний раз редактировалось opel431, 23-05-2011 в 19:53.


Отправлено: 19:42, 23-05-2011 | #27


Аватара для Malfatto

Storm Spirit


Сообщения: 467
Благодарности: 33

Профиль | Отправить PM | Цитировать


opel431, всё равно результат не тот.

Отправлено: 19:55, 23-05-2011 | #28


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Цитата Malfatto:
всё равно результат не тот. »
Вы сначала посмотрите, что вы используете, а потом задавайтесь вопросом.
WS_THICKFRAME - Создание окна с толстой рамкой. Рамка используется для изменения размеров окна.

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Отправлено: 20:02, 23-05-2011 | #29


Аватара для Malfatto

Storm Spirit


Сообщения: 467
Благодарности: 33

Профиль | Отправить PM | Цитировать


opel431, собственно, только с помощью WS_THICKFRAME и получается сделать толстую рамку, как на скриншоте. потому я и создал эту тему, чтобы мне подсказали аналог, или вообще как можно сделать иначе.

p.s. вот здесь, например, показано решение на Visual C#. как провернуть подобное на делфи - в этом и вопрос.

Отправлено: 20:06, 23-05-2011 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Проблема с видом формы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Проблема с видом значков Dorian2222 Microsoft Windows Vista 0 30-06-2010 23:00
[решено] FileOpenDialog с заданым видом отображения файлов cra5h_ AutoIt 2 01-02-2010 17:45
Интерфейс - Пожалуйста помогите с видом папок. Areso Microsoft Windows 2000/XP 1 09-09-2009 18:51
проблемма с видом папки.... Just Microsoft Windows 2000/XP 0 06-02-2006 14:08
Проблема с отправкой формы по E-mail rhsk Вебмастеру 5 09-10-2005 23:37




 
Переход