0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
1

Работа с MDIChild в Delphi 7

21.06.2010, 13:45. Показов 8646. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос вот в чем:
Есть главная форма и 6 дочерних.
Если открыть их все и развернуть, то переключаться между ними не представляется возможным (переоткрывать формы нельзя, если форма открыта, выдается сообщение, что такая форма уже открыта), придется снова уменьшать и находить нужную форму.

Как сделать так, чтобы можно было переключать на нужную форму, которая открыта???

Если поможете, буду признательна!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2010, 13:45
Ответы с готовыми решениями:

Можно ли из MDIchild формы открывать другую Mdichild форму?
Поясню. Mdichild(дочерняя форма) содержится в mdiform(родительская форма), из родительской формы...

Вывод MdiChild в MdiForm
Проблема такова: Хочу сделать форму с горизонтальным меню, при нажатии на кнопки будут открываться...

Сворачивание MDIChild окна
При сворачивании дочернего MDI окна, оно уходит в нижний левый угол родительского окна. Можно ли...

Не закрывается MDIChild форма :(
Хай Олл! Возник вопрос следующего рода. Не закрывается вновь созданный MDIChild. Перепробовал...

28
11 / 10 / 3
Регистрация: 06.10.2008
Сообщений: 107
21.06.2010, 14:42 2
а кнопочками пробовала? с помощью команда show?
0
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
21.06.2010, 14:43  [ТС] 3
Цитата Сообщение от ZelenyiZmei Посмотреть сообщение
а кнопочками пробовала? с помощью команда show?
Пробовала, программа вылетает!
0
11 / 10 / 3
Регистрация: 06.10.2008
Сообщений: 107
21.06.2010, 14:48 4
имя_формы.show; ни какой ошибки не должно быть только что проверил не showmodal, а просто show.
Delphi
1
2
3
4
procedure TForm1.Button2Click(Sender: TObject);
begin
form2.show;
end;
0
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
21.06.2010, 14:56  [ТС] 5
Цитата Сообщение от ZelenyiZmei Посмотреть сообщение
имя_формы.show; ни какой ошибки не должно быть только что проверил не showmodal, а просто show.
Delphi
1
2
3
4
procedure TForm1.Button2Click(Sender: TObject);
begin
form2.show;
end;
Я конечно дура, но не настолько, я именно show и пишу

Delphi
1
2
3
4
procedure TMain.ToolButton21Click(Sender: TObject);
begin
Pokupately.Show;
end;
Вылетает и все тут

Добавлено через 4 минуты
У меня вот так работает
Delphi
1
2
3
4
procedure TMain.ToolButton21Click(Sender: TObject);
begin
MDIChildren[1].Show;
end;
Но проблема, как программно определять какая форма под каким номером идет????
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
21.06.2010, 15:43 6
Zaya007, номера окон храняться в родительской форме, поэтому вам надо какие-то использовать свои свойства для классов окон-детей, чтобы потом в массиве можно было найти заданную форму
0
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
21.06.2010, 15:45  [ТС] 7
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Zaya007, номера окон храняться в родительской форме, поэтому вам надо какие-то использовать свои свойства для классов окон-детей, чтобы потом в массиве можно было найти заданную форму
Вопрос в том какие свойства, я что-то нигде не нашла ничего
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
21.06.2010, 16:12 8
Zaya007, ну вы же можете для класса писать свои свойства... можете в caption писать такое название, которое потом поможет вам идентифицировать конкретное окно
0
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
21.06.2010, 16:14  [ТС] 9
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Zaya007, ну вы же можете для класса писать свои свойства... можете в caption писать такое название, которое потом поможет вам идентифицировать конкретное окно
Ну у форм у меня и так свои имена, по которым их можно идентифицировать, а вот про классы я немного не поняла?
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
21.06.2010, 16:16 10
Zaya007, ну вообще окна ваши - это и есть классы...
0
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
21.06.2010, 16:25  [ТС] 11
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Zaya007, ну вообще окна ваши - это и есть классы...

я через имя пробовала
например:
Delphi
1
Pokupately.Show
но так не работает,
а с MDICHildren[i] не могу разобраться
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
22.06.2010, 11:20 12
Zaya007, Pokupately.Show - а что говорит при таком вызове?
0
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
22.06.2010, 11:22  [ТС] 13
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Zaya007, Pokupately.Show - а что говорит при таком вызове?

Delphi
1
Показать форму Pokupately
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
22.06.2010, 12:33 14
Zaya007,
Цитата Сообщение от Zaya007 Посмотреть сообщение
Показать форму Pokupately
вы мне строку расшифровали? спасибо, но я догадывался о ее назначении... почему у вас не работает, что там происходит - ошибка или что?
0
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
22.06.2010, 12:37  [ТС] 15
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Zaya007,

вы мне строку расшифровали? спасибо, но я догадывался о ее назначении... почему у вас не работает, что там происходит - ошибка или что?
Да, ошибка выходит и все
Delphi
1
Project Pokupatel.exe raised exception class EAccessViolation with message 'Access violation at address 0047A0E6 in module 'Pokupatel.exe'. Read of address 000002F4'. Process stopped. Use Step or Run to continue.
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
22.06.2010, 12:40 16
Zaya007, а вам не рассказывали, что прежде чем к объекту обращаться, неплохо бы его еще и создать с помощью функции Create?
0
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
22.06.2010, 12:41  [ТС] 17
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Zaya007, а вам не рассказывали, что прежде чем к объекту обращаться, неплохо бы его еще и создать с помощью функции Create?
Ну вооще-то он у меня создается
Delphi
1
TPokupately.Create(Owner);
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
22.06.2010, 12:44 18
Zaya007, покажите все код того места, где ошибка эта возникает
0
0 / 0 / 0
Регистрация: 11.03.2009
Сообщений: 38
22.06.2010, 12:47  [ТС] 19
Весь Unit? У меня там много всего а если конкретно вызов и создание то вот:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TMain.N8Click(Sender: TObject);
begin
If n7.Tag = 0 then
begin
TPokupately.Create(Owner);
N7.Tag:=1;
IF Prava_d.Pr=true then
begin
N14.Enabled :=true;
N15.Enabled :=true;
N16.Enabled :=true;
ToolButton1.Enabled :=true;
ToolButton3.Enabled :=true;
ToolButton4.Enabled :=true;
end;
end
Else MessageBox(Handle,'Форма уже открыта','Внимание',Mb_OK+MB_ICONINFORMATION);
end;
Delphi
1
2
3
4
procedure TMain.ToolButton22Click(Sender: TObject);
begin
Pokupately.Show;
end;
Но могу и весь unit если надо
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
22.06.2010, 15:23 20
а что будет происходить, если сделать так:
Delphi
1
if Pokupately <> nil then Pokupately.Show;
и почему создание и показ формы разнесены по разным процедурам? а вдруг я не нажму N8, что тогда будет?
0
22.06.2010, 15:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2010, 15:23
Помогаю со студенческими работами здесь

Как обратиться к переменной MDIChild
создал класс, объект которого является MDIChild формой: unit NewForm; interface uses ...

Обращение к объектам, расположенным на MDIChild
На главной форме расположено меню. Средствами этого меню создается дочерняя форма. Но из этого же...

Косяк при создании MDIChild форм
привет всем ! В общем вопрос-то простой, КАК заставить родительскую MDI-форму НЕ ТРОГАТЬ РАЗМЕР...

EAbstractError MDIChild в DLL,загружаемой динамически,Application
Здравствуйте. В строчке Child := TMDIChild.Create(Application.MainForm); у меня ошибка - попытка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru