Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.01 c
1-82302
AndreyAs
2003-09-15 16:23
2003.09.25
MainMenu на Panel?


1-82311
Дубинин Алексей
2003-09-13 22:41
2003.09.25
Ошибка в программе


14-82440
Некрофил-затейник__
2003-09-08 07:10
2003.09.25
Понедельник


14-82411
Гребублин
2003-09-04 18:49
2003.09.25
Как вам


14-82435
Дон Хуан
2003-08-21 18:35
2003.09.25
---|Ветка была без названия|---





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский