Поиск:

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


Бывалый
*


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

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



Цитата(mrbrooks @  23.3.2009,  11:39 Найти цитируемый пост)
petlyura, попробуй написать вместо ShowMessage ("Ура!"); 
WindowsState = wsMaximized;

Тут схема такова:
Код

void __fastcall TFClient::ApplicationEvents1Message(tagMSG &Msg,
      bool &Handled)
{
 if (Msg.message == WM_NCLBUTTONDBLCLK)
  {
   int result = SendMessage(Msg.hwnd, WM_NCHITTEST, 0, Msg.lParam);
   if (result == HTCAPTION)
    {
            WindowState = wsMaximized;
    }
  }        
}

Сначала, выполняется WindowState = wsMaximized, после чего выходим из обработчика, и только потом срабатывает сворачивание в окно. Как-то надо по-другому отлавливать.
PM MAIL   Вверх
mrbrooks
Дата 23.3.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



petlyura, попробуй WindowState = wsMaximized в OnResize формы
PM MAIL   Вверх
petlyura
Дата 23.3.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(mrbrooks @  23.3.2009,  13:40 Найти цитируемый пост)
petlyura, попробуй WindowState = wsMaximized в OnResize формы

Так, решил все-таки. ApplicationEvent выкинул за ненадобностью. А в OnResize засунул 
Код

this->Height  = Screen->Height;
this->Width = Screen->Width;

на wsMaximized прога не срабатывала как нужно.
Из наблюдений. Первый двойной клик на заголовке после запуска программы приводит к мерцанию окна (окно быстро сворачивается в окно меньшего размера и разворачивается обратно). В дальнейшем никакие клики ни к чему не приводят. Сделал вывод, что двойной клик на заголовке реализовывает функцию "сворачивания в окно", но не обратную ф-цию. Потому после первого двойного клика, форма как бы находится в режиме "свернута в окно", а потому не может быть свернута еще раз. 
Конечно, коряво, но меня вполне устраивает.
mrBooks, Вам еще +1. К сожалению, только на словах. Система не дает возможности два раза в день плюсы ставить, хотя заслужили. По сути, решили 2 задачи.

Это сообщение отредактировал(а) petlyura - 23.3.2009, 15:28
PM MAIL   Вверх
Anikmar
Дата 23.3.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

petlyura
mrBooks, Вам еще +1. К сожалению, только на словах. Система не дает возможности два раза в день плюсы ставить, хотя заслужили. По сути, решили 2 задачи.


Поможем, что делать  smile 

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


Бывалый
*


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

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



smile Спасибо, Аникмар!

На всякий случай, оставляю вопрос открытым, вдруг кто-то что-нибудь мудрое подскажет.
PM MAIL   Вверх
Klin
Дата 24.3.2009, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(mrbrooks @  23.3.2009,  09:52 Найти цитируемый пост)
Чем не устраивает сразу BorderStyle = bsDialog ?

Хм... про диалог не увидел. В принципе визуально тот же эффект, насчет программной стороны не знаю. А bsToolWindow - не имеет смысла.

Насчет по умнее не знаю, но что-то мне подсказывает, что не обязательно использовать стандартный заголовок - уж как-то много "страховок" используется. Имхо намного "приятней" будет использовать свой, при этом на OnMouseDown заголовка поставить:

Код

  if(Button == mbLeft)
  {
    long SC_DRAGMOVE = 0xF012;
    ReleaseCapture();
    SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0);
  }


Впрочем, решать вам, а это как альтернатива.


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


Бывалый
*


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

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



Цитата(Klin @  24.3.2009,  02:23 Найти цитируемый пост)
Насчет по умнее не знаю, но что-то мне подсказывает, что не обязательно использовать стандартный заголовок - уж как-то много "страховок" используется. Имхо намного "приятней" будет использовать свой, при этом на OnMouseDown заголовка поставить

Честно, я не знаю, как сделать свой заголовок... 
PM MAIL   Вверх
Klin
Дата 24.3.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Я же говорю, как это сделать. Заголовком может быть все, что душе угодно. Хоть TPanel, хоть рисунок, лишь бы пользователю было бы понятно. Основная его функция - сообщить пользователю, что это за окно и реализация перемещения, которую я уже привел выше.


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


Новичок



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

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



Поставь в опциях формы Autosize=true и сколко не клацай размер она не изменит!!!
PM MAIL   Вверх
Klin
Дата 30.3.2009, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



LionMdS, проблема была в сворачивании, а не в изменении размеров окна. А при BorderStyle = bsDialog или некоторым другим параметрам, не требует использования Autosize.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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