Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форма подобна delphi app builder 
:(
    Опции темы
SDjon
Дата 1.3.2010, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день.

Как реализовать форму подобную delphi TappBuilder (форма, где находятся компоненты и основное меню программы)

Первое что пришло на ум

На форму добавить панель 
В обработчик Form1.FormShow
Panel1.width := Screen.width;
Form1.AutoSize:=true;

При этом несовсем понятное поведение формы - 
при максимизации можно таскать форму за заголовок (caption)

PM MAIL   Вверх
dvamaster
Дата 3.3.2010, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



как вариант, отловить нажатие перемещение мыши по заголовку (т.е. текущее сообщение заменить на пустое) когда форма в развернутом виде


--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
SDjon
Дата 3.3.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Можно заменить
Код

Form1.AutoSize:=true;


на 
Код

 procedure Form1.WMWindowPosChanging(var Msg: TWMWindowPosChanging);
      message WM_WINDOWPOSCHANGING;
begin
  CaptionHeight := GetSystemMetrics(SM_CYCAPTION);
Msg.WindowPos^.cy :=  Min(Msg.WindowPos^.cy, Panel1.Height +
//    CaptionHeight);

 inherited;


или

Код

 procedure Form1.WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
 begin
     inherited;
     with Msg.MinMaxInfo^ do
     begin
//          ptMinTrackSize.x:= Panel1.width;
//          ptMaxTrackSize.x:= Panel1.width;
//          ptMinTrackSize.y:= Panel1.height;
          ptMaxTrackSize.y:= Panel1.height;
   end;
 end;

---
Заглушка на перетаскивание за catpion при wsMaximized
Код

WMNCHitTest(var Msg: TWMNCHitTest);
 begin
      inherited;
  if (Msg.Result = HTCAPTION) and (Self.WindowState = wsMaximized) then
    Msg.Result:= HTNOWHERE
end


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

есть идеи?


M
Rrader
Используйте подсветку кода (кнопка "Код")



Это сообщение отредактировал(а) Rrader - 3.3.2010, 15:20
PM MAIL   Вверх
SDjon
Дата 11.3.2010, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Конечное решение

Код


Ограничиваем высоту главной формы
procedure TForm1.FormCreate(Sender: TObject);
begin
 Constraints.MaxHeight:=pnlMain.Height;
end;


в дочерних
Код

procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging);  message WM_WINDOWPOSCHANGING;


 procedure TChild1.WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo);
 begin
     inherited;
{

ptMaxSize Размер окна при его максимизации.
ptMaxPosition Положение левого верхнего угла окна при его максимизации.
ptMaxTrackSize Максимальный размер окна при увеличении его размеров.
ptMinTrackSize Минимальный размер окна при уменьшении его размеров.
}

         Msg.MinMaxInfo^.ptMaxPosition.y:= MainFormBottom;


 end;

где 

MainFormBottom:= Form1.pnlMain.Height +  GetSystemMetrics(SM_CYCAPTION)+10;

+10 константа подобранная "на глаз " т.к. без нее возникает прокрутка на Главной форме (Form1)
Вопрос:
Как точно вычислить высоту?


Это сообщение отредактировал(а) SDjon - 11.3.2010, 11:31
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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