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

Поиск:

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


Новичок



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

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



В общем, есть неразрешимая проблема! smile
Есть MDI-форма на ней расположен CategoryPanelGroup (align=alLeft) и TabControl (align=alTop).
http://s2.ipicture.ru/uploads/20110330/Gg1FFMxv.png

Так вот каким образом сделать так, чтобы alLeft имел приоритет над alTop?
http://s2.ipicture.ru/uploads/20110330/5T7RI5tK.png

Единственное, что пришло в голову так это бросить TabControl на Panel и менять размер TabControl по изменению размера формы. Но в результате получается не совсем тот вид, который нужен.
http://s2.ipicture.ru/uploads/20110330/tUCAR0QJ.png
PM   Вверх
superVad
Дата 30.3.2011, 11:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

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



Цитата(Valart @  30.3.2011,  09:57 Найти цитируемый пост)
Так вот каким образом сделать так, чтобы alLeft имел приоритет над alTop?

Не совсем понял, что это значит - иметь приоритет.
Может поставить TabControl alClient?
PM MAIL   Вверх
Valart
Дата 30.3.2011, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(superVad @  30.3.2011,  11:50 Найти цитируемый пост)
Не совсем понял, что это значит - иметь приоритет.

В принципе, на скрине всё показано... Стандартно alTop имеет приоритет над alLeft, т.е. alTop, грубо говоря, отнимает у alLeft место. smile
Если поставить у TabControl alClient, то не будет места для отображения MDIChild. TabControl в данном случае используется для переключения между дочерними окнами.

PM   Вверх
Frees
Дата 30.3.2011, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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


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


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(Valart @  30.3.2011,  12:15 Найти цитируемый пост)
TabControl в данном случае используется для переключения между дочерними окнами.
А принципиально в этом случае так извращаться? Не проще ли использовать PageControl и на страницы накидать тех компонентов, что должны быть на миди-формах?



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Valart
Дата 30.3.2011, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Frees @  30.3.2011,  12:25 Найти цитируемый пост)
для TabControl  не делай align, а используй Ancher, что бы правый его край двигался вместе с формой


Если для TabControl не делать Align, то дочерние окна подлезают под него.

Добавлено через 4 минуты и 21 секунду
Цитата(Poseidon @  30.3.2011,  12:33 Найти цитируемый пост)
Не проще ли использовать PageControl и на страницы накидать тех компонентов, что должны быть на миди-формах?


Нет, не проще. В программе иногда нужно будет рассматривать одновременно два или больше окон. Да и форм предполагается большое количество.
PM   Вверх
Valart
Дата 3.4.2011, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Судя по всему, проблема действительно неразрешимая, хотя кажется такой простой...
PM   Вверх
superVad
Дата 3.4.2011, 18:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

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



Кинь справа панель с alClient. А уже на эту панель TabControl alTop.
PM MAIL   Вверх
Valart
Дата 4.4.2011, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(superVad @  3.4.2011,  18:43 Найти цитируемый пост)
Кинь справа панель с alClient. А уже на эту панель TabControl alTop.


Ты сам пробовал? Если панель будет alClient, то где будут отображаться дочерние окна? Подсказываю: под панелью.
PM   Вверх
Frees
Дата 4.4.2011, 16:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Valart @  4.4.2011,  18:26 Найти цитируемый пост)
Ты сам пробовал? Если панель будет alClient, то где будут отображаться дочерние окна? Подсказываю: под панелью.

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


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


Новичок



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

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



Цитата(Frees @  4.4.2011,  16:15 Найти цитируемый пост)
для дочерних окон можно парентом панель сделать, и они будут на ней показываться.


Пробовал уже. Но что-то не получилось. Не отображается у меня дочернее окно на панели. Если у тебя получилось, то пожалуйста напиши как?
PM   Вверх
_Dimon_
Дата 5.4.2011, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

Может не так понял, но судя поскриншотам задача легко решается.

З.Ы. Напиши как создаешь чилд-форму, может там че не то, хз......................

Это сообщение отредактировал(а) _Dimon_ - 5.4.2011, 01:23
PM MAIL   Вверх
Frees
Дата 5.4.2011, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Valart @  4.4.2011,  20:01 Найти цитируемый пост)
Пробовал уже. Но что-то не получилось. Не отображается у меня дочернее окно на панели. Если у тебя получилось, то пожалуйста напиши как?

нет я так не пробовал, поэтому и не посоветовал такой вариант в своем первом посте.


Цитата(_Dimon_ @  5.4.2011,  04:17 Найти цитируемый пост)
2) Не могу понять, почему не работает так, как предложил Frees в последнем посте.

попробовал, не работает..

просто присвоить Parent не работает

Код

procedure TMainForm.CreateMDIChild(const Name: string);
var
  Child: TMDIChild;
begin
  { create a new MDI child window }
  Child := TMDIChild.Create(Application);
  Child.Parent := Panel1;
  Child.Caption := Name;
  if FileExists(Name) then Child.Memo1.Lines.LoadFromFile(Name);
end;


при присвоении

Код

---------------------------
Debugger Exception Notification
---------------------------
Project MDIAPP.exe raised exception class EInvalidOperation with message 'Cannot focus a disabled or invisible window'.
---------------------------
Break   Continue   Help   
---------------------------




Это сообщение отредактировал(а) Frees - 5.4.2011, 06:25


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


Новичок



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

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



Цитата(_Dimon_ @  5.4.2011,  01:17 Найти цитируемый пост)
З.Ы. Напиши как создаешь чилд-форму, может там че не то, хз......................


Цитата(Frees @  5.4.2011,  06:23 Найти цитируемый пост)
Child := TMDIChild.Create(Application);


smile
PM   Вверх
Valart
Дата 5.4.2011, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


А он, этот TsFrameBar, может быть контейнером для форм?
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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