Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Список MDI окон [D7, XP]


webpauk ©   (2008-06-13 16:29:00) 

строю список mdichildren:
for fI := 0 to MDIChildCount-1 do

при закрытии mdiform (Close), из списка эта форма не исчезает.
в чем причина?


MsGuns   (2008-06-14 03:41:00) [1]

Зачем кому-то что-то посылать, не проще ли этот список смотреть по необходимости, например по нажатию на гл.форме кнопки "окна", тем более что у MDI это уже все есть.


Германн   (2008-06-14 00:58:00) [2]


> webpauk ©   (13.06.08 18:59) [17]
>
> впрочем, посылай сообщение главному окну через PostMessage,
>  чтобы обновил список, в FormDestroy mdi-child
>
> дело....
> работаит!
>

И запомни этот совет на будущее. PostMessage помогает решить очень многие "трудные" вопросы при работе с VCL.


webpauk   (2008-06-13 18:59:00) [3]

впрочем, посылай сообщение главному окну через PostMessage, чтобы обновил список, в FormDestroy mdi-child

дело....
работаит!


Игорь Шевченко   (2008-06-13 18:50:00) [4]


> вот...
> я про это и гаварю.
> вопрос как?


вопрос - нафига ?

впрочем, посылай сообщение главному окну через PostMessage, чтобы обновил список, в FormDestroy mdi-child


webpauk   (2008-06-13 18:44:00) [5]


> webpauk ©   (13.06.08 18:38) [12]

то, что ты предложил - не решение...


engine   (2008-06-13 18:41:00) [6]

> [12] webpauk ©   (13.06.08 18:38)

у меня телепатор сломался


webpauk   (2008-06-13 18:39:00) [7]


> engine ©   (13.06.08 18:30) [11]


> Delete(IndexOf(Caption));


а если у всех форм один и тот же Caption? кхм...


webpauk   (2008-06-13 18:38:00) [8]


> engine ©   (13.06.08 18:30) [11]

ComboBox1 - только пример. всё намного хуже


engine   (2008-06-13 18:30:00) [9]

action := caFree;
 with Form1.ComboBox1.Items do
   Delete(IndexOf(Caption));
end;


webpauk   (2008-06-13 18:25:00) [10]


> Игорь Шевченко ©   (13.06.08 18:24) [9]

вот...
я про это и гаварю.
вопрос как?


Игорь Шевченко   (2008-06-13 18:24:00) [11]


> procedure TForm2.FormClose(Sender: TObject; var Action:
> TCloseAction);
> begin
>  Action:=caFree;
>  Form1.SEtMDI;
> end;


А с чего бы списку меняться - форма в этот момент еще существует.


webpauk   (2008-06-13 18:12:00) [12]

вот пример:
Form1 - fsMDIForm
Form2 - fsMDIChild

Panel1.align:=alTop;
(Butto1, Combobox1).Parent:=Panel1;

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   Panel1: TPanel;
   Button1: TButton;
   ComboBox1: TComboBox;
   procedure Button1Click(Sender: TObject);
   procedure ComboBox1Click(Sender: TObject);
 public
   procedure SEtMDI;
 end;

var
 Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 TForm2.Create(Application).Caption:='Ôîðìà: '+FloatToStr(random(100));
 SEtMDI;
end;

procedure TForm1.SEtMDI;
var
 fI: Integer;
begin
 ComboBox1.Clear;
 for fI := 0 to MDIChildCount-1 do
 begin
   ComboBox1.AddItem(MDIChildren[fI].Caption, MDIChildren[fI]);
 end;
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
 TForm2(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).Show;
end;

end.


unit Unit2;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm2 = class(TForm)
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action:=caFree;
 Form1.SEtMDI;
end;

end.


webpauk   (2008-06-13 17:44:00) [13]

в главной форме строится список mdi форм.
после закрытия mdi формы, происходит построение списка заново.


Игорь Шевченко   (2008-06-13 17:40:00) [14]


> стоит...


Все, телепатор сломался


MsGuns   (2008-06-13 17:33:00) [15]

Из чего следует, что форма "не исчезает" и в каком месте просматривается список дочек  ?


webpauk   (2008-06-13 17:20:00) [16]


> Игорь Шевченко ©   (13.06.08 17:09) [3]

стоит...


Игорь Шевченко   (2008-06-13 17:09:00) [17]


> абычнае акно. без риакций


Action := caFree в OnClose окна


webpauk   (2008-06-13 16:39:00) [18]


> Правильный-Вася   (13.06.08 16:37) [1]
> видимо, у окна по умолчанию стоит Hide-реакция на Close

абычнае акно. без риакций


Правильный-Вася   (2008-06-13 16:37:00) [19]

видимо, у окна по умолчанию стоит Hide-реакция на Close


Наверх

Титульная страница Поиск, карта сайта Написать письмо