Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
ВнизMDI Найти похожие ветки
← →
BAYES (2003-09-12 13:51) [0]Добр. день! Такая проблема, в MDIForm, нажимаю кнопку появлятся MDIChild, еще раз нажимаю еще одно MDIChild,а мне просто необходимо что бы MDIChild появлялось один раз.
← →
Jeer (2003-09-12 13:54) [1]Убивай или запрещай
← →
clickmaker (2003-09-12 13:54) [2]Так это уже не MDIChild по смыслу. Вся фишка то в том, что это MultiDocumentInterface.
А в твоем случае - это обычное окно, с проверкой типа
if Assigned(Form1) and (not Form1.Visible) then
Form1.Show;
← →
BAYES (2003-09-12 14:11) [3]<clickmaker>
Дело в том что Form1 у меня исключено из автоматически создаваемых, и я ее вызываю
O_Form1:=TForm1.Create(Application), а значит Show возникает после создания. А как запретить Create, после того как уже одна форма создана?
← →
DmS (2003-09-12 14:14) [4]на кнопке измени .Enable:=False;
← →
Плохиш_ (2003-09-12 14:20) [5]BAYES (12.09.03 14:11) [3]
А проверить перед созданием религия не позволяет?
← →
BAYES (2003-09-12 14:24) [6]<DmS>
Спасибо, но ента кнопка мне еще нужна, ход хитрый.
← →
BAYES (2003-09-12 14:34) [7]<Плохиш_>
Думаешь я так не пробовал, не получается.
← →
Vlad (2003-09-12 14:49) [8]>BAYES (12.09.03 14:34) [7]
Плохо пробовал.
На кнопку:
1) проверить, если форма не Nil, то выход.
2) создать форму
3) показать форму
4) .Free
5) =Nil
И еще скажи что так не заработает.
← →
DmS (2003-09-12 15:05) [9]
> проверить, если форма не Nil, то выход
почему она должна быть NIL ?
← →
BAYES (2003-09-12 15:05) [10]<Vlad>
Вот мой код:
var
O_PRICE:TPRICE;
begin
if PRICE<>Nil then PRICE.Close;
O_PRICE:=TPRICE.Create(Application);
O_PRICE.Show;
O_PRICE.Free;
O_PRICE:=nil;
end;
end.
он не пошет, может не правильно?
← →
DmS (2003-09-12 15:08) [11]мда ....
← →
DmS (2003-09-12 15:13) [12]
try
Form2.Show;
Form2.Caption:="Заголовок";
except
Application.CreateForm(TForm2, Form2);
Form2.Caption:="Заголовок";
end;
← →
BAYES (2003-09-12 15:24) [13]<DmS>
Что, мда..
Я же говорю, форма не Auto-create forms, a Avaiblable forms. Значит ее нужно создать а потом творить с ней. А твой код годен для уже созданной форм.
← →
DmS (2003-09-12 15:26) [14]
> Application.CreateForm(TForm2, Form2);
а эта строчка тебе о чем говорит ?
← →
BAYES (2003-09-12 15:49) [15]<DmS>
Каюсь. Забыл, что под делфя обработку исключений лучше не проводить. ЕХЕ работает, но кнопка показывает форму один раз т.е. после закрытия (Action := caFree), показываться отказывается.
← →
clickmaker (2003-09-12 15:50) [16]> BAYES (12.09.03 15:05) [10]
O_PRICE.Show;
O_PRICE.Free;
Как это?
Я бы еще понял, если б ShowModal...
← →
BAYES (2003-09-12 15:56) [17]<clickmaker>
O_PRICE.Show;
O_PRICE.Free;
Да я понял, работаю уже на автопилоте, что скажут, то и делаю. думать совершенно не могу. Это называется "Сам породил, сам и убил".
← →
DmS (2003-09-12 16:50) [18]
> но кнопка показывает форму один раз т.е. после закрытия
> (Action := caFree), показываться отказывается
у меня все нормально. убери в теле проекта (.dpr) создание формы (Application.CreateForm(TForm2, Form2);)
← →
Плохиш_ (2003-09-12 17:03) [19]>BAYES (12.09.03 15:49) [15]
Вот, молодец, половину пути уже прошёл :-)
А теперь подсказка: После закрытия формы, как ты описал, указатели на форму не равны nil, а указывают куда-то.
← →
BAYES (2003-09-12 18:26) [20]<DmS>
У меня из (.dpr) было изначально убрано (Application.CreateForm(TForm2, Form2);
Но опять же показывать после закрытия отказывается.
Может другой метод есть?..
← →
AlexSV (2003-09-12 19:00) [21]> BAYES (12.09.03 18:26) [20]
> Может другой метод есть?..
Не знаю, другой или как, но вот это работает: (Sorry, no comment"s)
---------------------------------------------
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "Unit2.pas" {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
---------------------------------------------
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
mmiTest: TMenuItem;
mmiChild: TMenuItem;
procedure mmiChildClick(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.mmiChildClick(Sender: TObject);
begin
if not Assigned(Form2) then begin
Form2 := TForm2.Create(Application);
end;
end;
end.
---------------------------------------------
unit Unit2;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm2 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
public
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TForm2.FormDestroy(Sender: TObject);
begin
Form2 := nil;
end;
end.
---------------------------------------------
А остальное добавишь по вкусу.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.012 c