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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с расположением элементов на форме 
V
    Опции темы
Valart
Дата 5.4.2011, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Попробовал сделать вот так:
user posted image
Т.е. бросил на форму CategoryPanelGroup (alLeft), Panel1 (alClient). На Panel1: TabControl (alTop) и Panel2 (alClient).
Ну и написал Form2.Parent := Panel2.
При этом Form1 и Form2 обычные, не MDI, формы.
Но сразу же обнаружились недостатки: нельзя переключиться на форму, кликнув мышкой в произвольное место на ней, а только по заголовку; размер дочерней формы автоматически не меняется при изменении размера родительской. Т.е. всё это нужно будет дописывать руками.

Это сообщение отредактировал(а) Valart - 7.4.2011, 09:02
PM   Вверх
Valart
Дата 6.4.2011, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(_Dimon_ @  5.4.2011,  01:17 Найти цитируемый пост)
1) Есть компонент TsFrameBar из пакета AlphaControls (для СНГ бесплатно даже в ком. целях).     Можно поменять MDI-Child на фреймы(а можно и не менять). События обработки есть в этом компоненте.  (ну это другой вариант)


Ну, с этим компонентом всё понятно. Не подойдёт он по ряду причин. Там же для переключения используются вертикально расположенные кнопки-заголовки, да и как с помощью него открыть на просмотр несколько окон? В общем, не годится!
PM   Вверх
Valart
Дата 6.4.2011, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Кстати, кто-нибудь знает компонент-наследник от TabControl или TabSet для переключения между окнами?
PM   Вверх
Frees
Дата 6.4.2011, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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





--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valart
Дата 6.4.2011, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Frees @  6.4.2011,  12:09 Найти цитируемый пост)
я такой знаюhttp://www.tmssoftware.com/site/aot.asp


На сколько я понял, TAdvOfficeMDITabSet платный и годится только для переключения между MDI.
А бесплатных аналогов с поддержкой обычных окон нет?
PM   Вверх
Valart
Дата 8.4.2011, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В общем, решил, что всё-таки буду использовать MDI-формы. Потому как иначе возникнут лишние заморочки с доделыванием обычных форм до свойств и поведения MDI.
Для переключения между дочерними окнами нашел вот это: MDI ButtonGroup.

А вот решение моего вопроса: Как обмануть align-ов
user posted image

Это сообщение отредактировал(а) Valart - 13.4.2011, 10:33
PM   Вверх
Gwire
Дата 12.4.2011, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как вариан могу предложить следуюшее:
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
    AutoScroll:= False;

    // Место для TPageControl
    PanelTabs := TPanel.Create( Self );
    PanelTabs.BevelOuter := bvNone;
    PanelTabs.Align      := alTop;
    PanelTabs.Parent     := Self;

    // Отступ для TPageControl
    BevelTabSp := TBevel.Create( Self );
    BevelTabSp.Shape  := bsSpacer;
    BevelTabSp.Align  := alLeft;
    BevelTabSp.Parent := PanelTabs;

    // TPageControl
    PageControl := TPageControl.Create( Self );
    PageControl.Align  := alClient;
    PageControl.Parent := PanelTabs;

    // Отступ рабочей области дочерных окон
    PanelSpacer := TPanel.Create( Self );
    PanelSpacer.BevelOuter := bvNone;
    PanelSpacer.Align      := alLeft;
    PanelSpacer.Parent     := Self;
    PanelSpacer.OnResize   := PanelSpacerResize;

    // Панель для бокового меню
    PanelWork := TPanel.Create( Self );
    PanelWork.BevelOuter := bvNone;
    PanelWork.Parent     := Self;

    // Для изменения разменов PanelSpacer
    Splitter := TSplitter.Create( Self );
    Splitter.ResizeStyle := rsUpdate;
    Splitter.AutoSnap    := False;
    Splitter.Align       := alLeft;
    Splitter.Left        := PanelWork.Width + 1;
    Splitter.Parent      := Self;
end;
Код

procedure TForm1.PanelSpacerResize(Sender: TObject);
begin
    PanelWork.Width  := PanelSpacer.Width;
    PanelWork.Height := PanelSpacer.Height + PanelTabs.Height;
    BevelTabSp.Width := PanelSpacer.Width + Splitter.Width;
end;

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


Бывалый
*


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

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



А по поводу переключения. В TabSet.Tag присваивай указатель формы которая связана с ним
Код

var F: TForm2;
  // . . .
  TabSet.Tag := Integer( F );

Код

  TForm(PageControl1.ActivePage.Tag).BringToFront;


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


Бывалый
*


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

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



Cовет: Чтобы не парить мозги что написать в AlignControls
1) Сохрани в папку с проектом файл Controls.pas.
2) Добавь его к проекту
3) И поменяй местами строки как тебе нравится (найди поиском):
Код

      DoAlign(alTop);
      DoAlign(alBottom);
      DoAlign(alLeft);
      DoAlign(alRight);
      DoAlign(alClient);
      DoAlign(alCustom);

PS: Этот вариант мне лично понравился.


Это сообщение отредактировал(а) Gwire - 12.4.2011, 14:46
PM MAIL   Вверх
Valart
Дата 13.4.2011, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Gwire, спасибо, но вариант с sql.ru мне нравится больше. Он, скажем так, более красивый. smile
А по переключению, я просто не хочу обрабатывать вручную. Делал так когда-то, только с TabSet. Есть хороший бесплатный компонент, так почему его не использовать? smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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