Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
ВнизУправление окнами в MDI-приложении Найти похожие ветки
← →
Магнит (2004-07-20 22:30) [0]Раньше я как-то над этим не задумывался, а теперь ломаю голову....как?
Если, допустим, в MDI-приложении, из главной формы, открыть две дочернии, то как из одной дочерней формы управлять другой?
Могу только обращаться к переменным, а к свойствам объектов не могу :-(
← →
AlexG © (2004-07-20 22:56) [1]Используй ActiveMDIChild, MDIChildCount и MDIChildren. Подробней смотри в помощи.
← →
Магнит (2004-07-20 23:05) [2]да я смотрел уж давно, но не врубаюсь... нафига обращаться к окну по какому-то одному компьютеру известному номеру, если наверняка можно обращаться по имени формы
← →
Gero © (2004-07-20 23:41) [3]
> если наверняка можно обращаться по имени формы
Можно, но по указателю на нее обращаться будет проще.
var
Form: TMyMDIChild;
begin
Form := TMyMDIChild.Create;
Form.Caption := "Hello";
end;
← →
Магнит (2004-07-20 23:52) [4]ругается на "Form: TMyMDIChild;"
← →
Алхимик © (2004-07-20 23:54) [5]
> ругается на "Form: TMyMDIChild;"
TMyMDIChild
Тип описал?
:))
← →
Магнит (2004-07-20 23:59) [6]в локальной процедуре всё нормально, не ругается, а вот когда глобально его описываю, то ругается.....где тогда этот тип опысывать? и как?
Заранее благодарю.
← →
Магнит (2004-07-21 00:04) [7]Опишу проблему подробнее:
из дочерней(Form1) формы запускается ещё одна дочерняя(Form2), надо что-бы дочерняя(Form1) была Form1.Enabled:=True;
← →
Gero © (2004-07-21 00:15) [8]Form1.Enabled := True;
← →
Магнит (2004-07-21 00:28) [9]хыы...понятное дело, но надо что-бы это Form1.Enabled:=True было написано в обработчике OnClose формы Form2
← →
Gero © (2004-07-21 00:32) [10]Тогда придется написать его в обработчике OnClose формы Form2.
← →
Магнит (2004-07-21 00:36) [11]да знаю я! Но ругается на Form1.Enabled:=True там
← →
Gero © (2004-07-21 00:39) [12]
> Но ругается на Form1.Enabled:=True там
Русским матом ругается или может какие-то сообщения выдает?
← →
Магнит (2004-07-21 00:59) [13]ну обычное дело "Access violation" и т. д.....
← →
Gero © (2004-07-21 01:22) [14]
> Магнит (21.07.04 00:59)
Скорее всего проблема не из-за Enabled.
Приведи весь код OnClose.
← →
Магнит (2004-07-21 07:48) [15]unit Unit2;
.....
uses Form1;
.....
procedure TForm2.Close(Sender: TObject);
begin
Form1.Enabled:=True;
end;
← →
Gero © (2004-07-21 12:06) [16]
> uses Form1;
> Form1.Enabled:=True;
?
← →
Bacuc © (2004-07-21 12:14) [17]Как я понял, проблема состоит в том, что обращаться к дочерней форме? Если да, то я обошел это так:
1. Описываю функцию поиска дочернего окна по его заголовку:function TForm1.SearchForm(TextCaption: string): integer;
var i,k: integer;
begin
k:=-1;
for i:=MDIChildCount-1 downto 0 do
if MDIChildren[i].Caption=TextCaption then k:=i;
Result:=k;
end;
2. А затем обращаюсь к окну:
if SearchForm("Form1")<>-1 then
MDIChildren[SearchForm("Form1")].Enabled:=True;
Show;
3. Можно обращаться к объектам формы Form1, например к Edit1:
if SearchForm("Form1")<>-1 then
(MDIChildren[SearchForm("Form1")] as Form1).Edit1.Text="EditText";
← →
Zlod3y (2004-07-22 13:50) [18]Да нет же!
допустим, в проекте 3 формы: Form1, Form2 и Form3
From1 - MDIForm
From2 и Form3 - MDIChild
на From1 есть меню, по выбору какого-то пункта открывается From2 (TForm2.Create(self)), на From2 есть кнопка, по нажатию на которую From2 делается Form2.Enabled:=False и открывается Form3 (TForm3.Create(self))...при закрытии Form3 нужно чтобы происходила такая вещь -> Form2.Enabled:=True
Как это реализовать я не пойму... :-(
← →
Плохиш © (2004-07-22 14:09) [19]
> Zlod3y (22.07.04 13:50) [18]
Если ты действительно в TForm2 пишешь TForm3.Create(self), то при закрытии TForm3 пиши TForm2(owner).Enable := true.
← →
Zlod3y (2004-07-22 14:18) [20]Плохиш - братан :о) с меня пЫво
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.039 c