Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Панель открытых дочерних форм на главной форме в MDI приложениях.

Ответить
Настройки темы
Delphi - Панель открытых дочерних форм на главной форме в MDI приложениях.

Аватара для Kapuha

Новый участник


Сообщения: 27
Благодарности: 1

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста, как сделать панель окон в MDI приложении Delphi, желательно стандартными средствами, не скачивая и не устанавливая других компонентов.
Ситуация такая: На родительской форме есть MainMenu. При выборе некоторых его пунктов, открываются дочерние формы. Нужно сделать так, чтобы:
1. Внизу родительской формы на панели окон отобразилась кнопка (вкладка, закладка, всё что угодно...) с названием этого окна.
2. При щелчке на закладку, форма становилась активной и выходила на передний план.
3. При закрытии окна, закладка исчезала.
Сразу скажу, я не мастер в Delphi, но хочу научится, поэтому если можно, варианты с примерами поподробнее. На какой форме, в какой процедуре и что писать.
Использую Delphi 7.
Заранее спасибо.

Отправлено: 11:21, 19-05-2011

 

Аватара для Kapuha

Новый участник


Сообщения: 27
Благодарности: 1

Профиль | Отправить PM | Цитировать


Мда...
Есть 2 варианта:
- никто и никогда не делал такой панели в своих прогах (в чём я сильно сомневаюсь);
- никто и никогда не делал такой панели в своих прогах с помощью стандартных средств (это более вероятно).
Если есть компоненты, выполняющие роль таких панелей (чёрт с ними если не стандартные), сообщите пожалуйста.

Отправлено: 12:07, 17-06-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Kapuha, вариант в Delphi Express вас устроит?
Смотреть св-ва форм и объектов. Здесь задача в бОльшей степени логическая, нежели программистская.
Цитата Kapuha:
в MDI приложении Delphi »
Каких приложениях? А, разобрался.
Давайте так. Я сделаю простенькую рабу как попало как я понял, а дальше будет видно?
Если что, то ближе к 15-16 часам. Если совсем нет, то в понедельник-среду. Просто среда разработки на работе, дома только Lazarus.
Хотя на подобных задачах разницы в них нет.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 12:14, 17-06-2011 | #3


Аватара для Kapuha

Новый участник


Сообщения: 27
Благодарности: 1

Профиль | Отправить PM | Цитировать


Я в принципе кое что сделал...
Процедура клика по пункту главного меню, которое открывает дочернее окно

procedure TMainForm.N17Click(Sender: TObject);
var F_DBConnect: TF_DBConnect;
mytab: TTabSheet;
begin
F_DBConnect := TF_DBConnect.Create(Application);
F_DBConnect.Width:=420;
F_DBConnect.Height:=340;
with PageControl1 do
begin
mytab:=TTabSheet.Create(Self);
mytab.PageControl:=PageControl1;
mytab.Caption:='Соединение с БД'; //Задаётся название вкладке на панели задач. Будет отображаться на ярлычке
mytab.Name:='sDBConn'; //Задаётся имя вкладке на панели задач
iDBConn:=mytab.PageIndex; //Переменной iDBConn присваивается индекс вкладки
PageControl1.ActivePageIndex:=iDBConn; //По индексу делается активной вкладка соответствующая данному окну.
end;
end;

Впринципе, тут всё нормально работает... даже вкладка удаляется, при закрытии окна.
Только один минус... Если повторно попытаться открыть уже открытое дочернее окно, то выскакивает ошибка, что компонент с именем в свойстве "sDBConn" уже есть... Тут надо просто проверку на открытость включит и если уже открыта, то просто сделать активной.
А вот на главной форме...
При нажатии на вкладку панели задачь выскакивает ошибка...
_____________________________________________________________________________________________
Project MyProgram.exe raised exception class EAccessViolation with message 'access violation at adress 0045BE36 in
module 'MyProgram.exe'. Read of address 000002F4'. Process stopped. Use Step or Run to continue.
-----------------------------------------------------------------------------------------------------------------------------------------------------

Процедура обработчика щелчка по вкладке (ярлыку) на панели задач
procedure TMainForm.PageControl1Change(Sender: TObject);
begin
if PageControl1.TabIndex=i1 then form1.Show;
if PageControl1.TabIndex=i2 then form2.Show; //(Вместо Show пробовал Active... Не помогло...)
end;

Индексы i1, i2, iDBConn объявляются как глобальные переменные.

Вот 100%, что я там что-то накосячил... Если подскажете мне где, буду благодарен

Отправлено: 12:53, 23-06-2011 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Панель открытых дочерних форм на главной форме в MDI приложениях.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Не публикуются новоти на главной в DLE 9.2 impulse101 Вебмастеру 0 23-03-2011 12:45
[решено] Создание дочерних окон morgan1991 AutoIt 11 17-07-2009 02:11
.NET - [решено] Переключение между MDI окнами и выбор открытого окна в приложении (C#) Delirium Программирование и базы данных 1 15-12-2008 08:52
Прочее - Нужна помощь в создании дочерних доменов buhanov Сетевые технологии 7 17-03-2008 08:09




 
Переход