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

Вниз

О запуске копии формы   Найти похожие ветки 

 
Serg1968 ©   (2007-05-31 14:36) [0]

На главной форме кнопка--при нажатии на нее должно открываться еще одно окно(не модальное).Сейчас при каждом нажатии открывается опять окно и так бесконечно.Как сделать чтобы после открывания окна принажатии другие окна не копировались.Спасибо


 
Palladin ©   (2007-05-31 14:39) [1]

Надо дать программе знать что форма уже открыта


 
Savek   (2007-05-31 14:50) [2]

Создавай таким образом

if not Assigned(SecondForm) then SecondForm:=TSecondForm.Create(Self);
   SecondForm.Show;


 
Джо ©   (2007-05-31 14:58) [3]

> [0] Serg1968 ©   (31.05.07 14:36)
> На главной форме кнопка--при нажатии на нее должно открываться
> еще одно окно(не модальное).Сейчас при каждом нажатии открывается
> опять окно и так бесконечно.Как сделать чтобы после открывания
> окна принажатии другие окна не копировались.Спасибо

Вар. 1.

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   FChildCreated: Boolean;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 if not FChildCreated then
 begin
   TForm2.Create(Application).Show;
   FChildCreated := True;
 end;
end;


Вар. 2 (расширенный предыдущий).

procedure TForm1.Button1Click(Sender: TObject);
begin
 if not ChildCreated then
 begin
   TForm2.Create(Application).Show;
   ChildCreated := True
 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
 public
 end;

var
 ChildCreated: Boolean = False;

implementation

{$R *.dfm}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 ChildCreated := False
end;



Вар. 3.

function FormExists (FormClass: TFormClass): Boolean;
var
 I: Integer;
begin
 Result := False;
 for I := 0 to Screen.FormCount-1 do
   if Screen.Forms[I] is FormClass then
   begin
     Result := True;
     Break
   end
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if not FormExists(TForm2) then
   TForm2.Create(Application).Show;
end;

===

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


В общем, вариантов масса, выбирай, исходя из задачи.


 
Palladin ©   (2007-05-31 15:03) [4]

проще единожды его создать и проверять на Visible


 
default ©   (2007-05-31 15:08) [5]

проще вообще не создавать:)

от задачи зависит, вводить ли флаг(например, он ещё где-то использоваться будет), создавать-ли форму один раз или каждый раз при нажатии  и тд и тп


 
Serg1968 ©   (2007-05-31 15:40) [6]

Спасибо большое.Все работает отлично.То что надо.


 
Serg1968 ©   (2007-05-31 15:45) [7]

Огромное спасибо.Все работает отлично.


 
Сергей М. ©   (2007-05-31 15:45) [8]


> Serg1968 ©   (31.05.07 15:40) [6]


Ждет тебя "большая засада"


 
Serg1968 ©   (2007-05-31 16:43) [9]


> Ждет тебя "большая засада"
</IПочему?>



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

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

Наверх





Память: 0.47 MB
Время: 0.042 c
15-1180506735
DVM
2007-05-30 10:32
2007.06.24
Windows XP Home и 2-х 4--х ядерные процессоры.


8-1161003706
zorik
2006-10-16 17:01
2007.06.24
каким способом можно быстро узнать разрешение файлов jpg и bmp?


2-1180533394
ShpionGraF
2007-05-30 17:56
2007.06.24
таблица MS Word


2-1180793081
Anna_Roza
2007-06-02 18:04
2007.06.24
TTable путешествия по строкам


8-1160757993
Minesweeper
2006-10-13 20:46
2007.06.24
Flash- обмен информацией с формой





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