Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заставить форму не сворачиваться в окно? 
:(
    Опции темы
petlyura
Дата 20.3.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

Репутация: 2
Всего: 2



Здравствуйте, товарищи!
Подскажите. Есть форма программы. В правом верхнем углу 3 кнопки: свернуть, свернуть в окно, закрыть. При запуске программы окно разворачивается во весь экран, и его нельзя двигать мышью. Только, когда мы свернем его в окно.
Задача Надо убрать первые 2 кнопки. И чтобы двигать мышью его нельзя было (удерживая за заголовок).

Как делал: установил false для biMinimize, miMaximize в BorderIcons формы. Осталась одна кнопка - крестик (закрыть). Так вот теперь программу можно двигать мышью и при двойном клике на заголовке она сворачивается в окно. Эти 2 возможности мне не нужны. Как быть, что делать? 
Благодарю.
PM MAIL   Вверх
Dmi3ev
Дата 20.3.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

Как делал: установил false для biMinimize, miMaximize в BorderIcons формы.

а надо только:
BorderStyle поставить bsToolWindow...


--------------------

PM MAIL   Вверх
Anikmar
Дата 20.3.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



С размерами то все просто. А вот чтобы двигать нельзя было - похоже тут только перехватчики событий писать и вручную а место возвращать.
PM MAIL ICQ   Вверх
mrbrooks
Дата 20.3.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Dmi3ev @  20.3.2009,  13:46 Найти цитируемый пост)
BorderStyle поставить bsToolWindow... 

двигаться то будет все равно, захватив курсором Border.

Добавлено через 1 минуту и 46 секунд
Тем паче можно и BorderStyle = bsDialog
PM MAIL   Вверх
Dmi3ev
Дата 20.3.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

двигаться то будет все равно, захватив курсором Border.

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


--------------------

PM MAIL   Вверх
mrbrooks
Дата 20.3.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Что бы не перемещалась за заголовок.
Код

unit1.h
......
private:
.....
void __fastcall FormFuckMove(TWMWindowPosChanging &msg);
BEGIN_MESSAGE_MAP
      MESSAGE_HANDLER(WM_WINDOWPOSCHANGING, TWMWindowPosChanging, FormFuckMove)
END_MESSAGE_MAP(TForm)
.....


Код

unit1.cpp
....
void __fastcall TForm1::FormFuckMove(TWMWindowPosChanging &msg);
{
msg.WindowPos->flags |= SWP_NOMOVE;
}


И никуда она родная не денется с подводной лодки.
PM MAIL   Вверх
petlyura
Дата 20.3.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

Репутация: 2
Всего: 2



Да, с BorderStyle = bsDialog окно стало как вкопанное, ни двойной клик не работает, и захватить за границу не получается, но куда-то исчезло меню. с bsToolWindow панель инструментов плохо отображается. 

Как отловить двойной клик по заголовку? Ф-цию или обработчик можно. 

PM MAIL   Вверх
mrbrooks
Дата 20.3.2009, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(petlyura @  20.3.2009,  15:29 Найти цитируемый пост)
Как отловить двойной клик по заголовку? Ф-цию или обработчик можно. 

Кидай на форму ApplicationEvent. В обработчике OnMessage

Код

 if (Msg.message == WM_NCLBUTTONDBLCLK)
  {
   int result = SendMessage(Msg.hwnd, WM_NCHITTEST, 0, Msg.LParam);
   if (result == HTCAPTION)
    {
            ShowMessage("Ура!");
    }
  }

PM MAIL   Вверх
Anikmar
Дата 20.3.2009, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Да ненадо ничего - поставьте ограничения размеров и не будут размеры меняться.

А от перетаскивания только мтеод перехвата работать будет походу...
PM MAIL ICQ   Вверх
Klin
Дата 21.3.2009, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



bsToolWindow?
Что-то вы мудрите, ребята... я бы просто bsNone поставил, но раз уж такая пьянка...

Итак, ставим:

BorderIcons

biMinimize = false
biMaximize = false

BorderStyle = bsSingle

При этом пропадут злощастные кнопки, да и размер будет фиксирован.
Насчет событий на перемещение, думаю все вполне законно.

ps. имхо просто нужно убрал заголовок.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
mrbrooks
Дата 23.3.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Klin @  21.3.2009,  01:19 Найти цитируемый пост)
ps. имхо просто нужно убрал заголовок. 

Автор об этом ничего не сказал - следовательно заголовок нужен.


Цитата(Klin @  21.3.2009,  01:19 Найти цитируемый пост)
bsToolWindow?
Что-то вы мудрите, ребята... я бы просто bsNone поставил, но раз уж такая пьянка...

Итак, ставим:

BorderIcons

biMinimize = false
biMaximize = false

BorderStyle = bsSingle

При этом пропадут злощастные кнопки, да и размер будет фиксирован.

Чем не устраивает сразу BorderStyle = bsDialog ?
PM MAIL   Вверх
petlyura
Дата 23.3.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

Репутация: 2
Всего: 2



Цитата(mrbrooks @ 20.3.2009,  15:45)

Кидай на форму ApplicationEvent. В обработчике OnMessage

Код

 if (Msg.message == WM_NCLBUTTONDBLCLK)
  {
   int result = SendMessage(Msg.hwnd, WM_NCHITTEST, 0, Msg.LParam);
   if (result == HTCAPTION)
    {
            ShowMessage("Ура!");
    }
  }

Да, похоже. Только я вот не знаю, как остановить действие двойного клика по заголовку. Что надо поставить вместо ShowMessage ("Ура!"); ?
PM MAIL   Вверх
mrbrooks
Дата 23.3.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(petlyura @  23.3.2009,  10:25 Найти цитируемый пост)
Что надо поставить вместо ShowMessage ("Ура!");

То, что ты хочешь сделать при двойном клике на заголовке smile 
PM MAIL   Вверх
petlyura
Дата 23.3.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

Репутация: 2
Всего: 2



Цитата(mrbrooks @  23.3.2009,  10:37 Найти цитируемый пост)
То, что ты хочешь сделать при двойном клике на заголовке


Цитата(petlyura @  23.3.2009,  10:25 Найти цитируемый пост)
Только я вот не знаю, как остановить действие двойного клика по заголовку

Вроде бы хочу сделать так, чтобы по двойному клику форма не сворачивалась в окно. Т.е. первоначально она развернута во весь экран, а двойной клик по заголовку сворачивает ее. Причем уже после обработки ApplicationEvent1Message. Думаю, может, вместо "Ура!" можно написать что-то, что остановит сворачивание...  smile 

PM MAIL   Вверх
mrbrooks
Дата 23.3.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



petlyura, попробуй написать вместо ShowMessage ("Ура!"); 

Код

WindowsState = wsMaximized;

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0724 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.