Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];

Вниз

Список MDI окон   Найти похожие ветки 

 
webpauk ©   (2008-06-13 16:29) [0]

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

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


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

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


 
webpauk ©   (2008-06-13 16:39) [2]


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

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


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


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


Action := caFree в OnClose окна


 
webpauk ©   (2008-06-13 17:20) [4]


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

стоит...


 
MsGuns ©   (2008-06-13 17:33) [5]

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


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


> стоит...


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


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

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


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

вот пример:
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.


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


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


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


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


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

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


 
engine ©   (2008-06-13 18:30) [11]

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


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


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

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


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


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


> Delete(IndexOf(Caption));


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


 
engine ©   (2008-06-13 18:41) [14]

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

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


 
webpauk ©   (2008-06-13 18:44) [15]


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

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


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


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


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

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


 
webpauk ©   (2008-06-13 18:59) [17]

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

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


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


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

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


 
MsGuns ©   (2008-06-14 03:41) [19]

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.07.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
3-1201904027
школьник
2008-02-02 01:13
2008.07.13
Вопрос по ограничениям в ИБ6


2-1213469824
VovKul
2008-06-14 22:57
2008.07.13
Как прочитать HTML файл как текст


15-1211889596
map
2008-05-27 15:59
2008.07.13
Какрта в программе


15-1212299399
LightRipple
2008-06-01 09:49
2008.07.13
Образ диска под Линуксом


8-1182254046
White_Leo
2007-06-19 15:54
2008.07.13
Определение частоты сигнала





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский