|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Панель открытых дочерних форм на главной форме в MDI приложениях. |
|
Delphi - Панель открытых дочерних форм на главной форме в MDI приложениях.
|
Новый участник Сообщения: 27 |
Подскажите пожалуйста, как сделать панель окон в MDI приложении Delphi, желательно стандартными средствами, не скачивая и не устанавливая других компонентов.
Ситуация такая: На родительской форме есть MainMenu. При выборе некоторых его пунктов, открываются дочерние формы. Нужно сделать так, чтобы: 1. Внизу родительской формы на панели окон отобразилась кнопка (вкладка, закладка, всё что угодно...) с названием этого окна. 2. При щелчке на закладку, форма становилась активной и выходила на передний план. 3. При закрытии окна, закладка исчезала. Сразу скажу, я не мастер в Delphi, но хочу научится, поэтому если можно, варианты с примерами поподробнее. На какой форме, в какой процедуре и что писать. Использую Delphi 7. Заранее спасибо. |
|
Отправлено: 11:21, 19-05-2011 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Мда...
Есть 2 варианта: - никто и никогда не делал такой панели в своих прогах (в чём я сильно сомневаюсь); - никто и никогда не делал такой панели в своих прогах с помощью стандартных средств (это более вероятно). Если есть компоненты, выполняющие роль таких панелей (чёрт с ними если не стандартные), сообщите пожалуйста. |
Отправлено: 12:07, 17-06-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Kapuha, вариант в Delphi Express вас устроит?
Смотреть св-ва форм и объектов. Здесь задача в бОльшей степени логическая, нежели программистская. Цитата Kapuha:
Давайте так. Я сделаю простенькую рабу Если что, то ближе к 15-16 часам. Если совсем нет, то в понедельник-среду. Просто среда разработки на работе, дома только Lazarus. Хотя на подобных задачах разницы в них нет. |
|
------- Отправлено: 12:14, 17-06-2011 | #3 |
Новый участник Сообщения: 27
|
Профиль | Отправить 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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Не публикуются новоти на главной в 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 |
|