Форум: "Начинающим";
Текущий архив: 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