Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перебор форм [D7, XP]


Страницы:   1 2

Fr ©   (2009-09-22 17:34:00) 

Приложение создает несколько однотипных форм Form1. Как перебрать все созданные формы в цикле?


Германн   (2009-09-25 16:55:00) [21]


> > Screen.Forms[i].Panel2.Caption:='Сменили надпись';
>
> компилятор не пропускает
>

TForm2(Screen.Forms[i]).Panel2.Caption:='Сменили надпись';


Fr   (2009-09-25 16:53:00) [22]


> Screen.Forms[i].Panel2.Caption:='Сменили надпись';

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

> Потому что Form2.Panel2.Caption:='Сменили надпись';

Как правильно плодить формы, чтобы потом ссылаться на нужную?


Thrashead   (2009-09-25 16:48:00) [23]

После создания новых Form2 ссылается на последнюю форму.

procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
for i:=0 to Screen.FormCount-1 do
  if Screen.Forms[i].Caption='3' then begin
    Screen.Forms[i].Panel2.Caption:='Сменили надпись';
    break;
  end;
end;


Германн   (2009-09-25 16:46:00) [24]


> В результате надпись меняется всегда у последней формы цикла
> for i:=0 to ... Почему?

Потому что Form2.Panel2.Caption:='Сменили надпись';


Fr   (2009-09-25 16:38:00) [25]

Есть форма, на ней 2 кнопки. По нажатию на первую плодятся формы на экране. При нажатии на вторую думал, что поменяется надпись на панели у формы с заголовком "3". В результате надпись меняется всегда у последней формы цикла for i:=0 to ... Почему? И как заставить смениться надпись напанели у нужной формы, а остальные оставить без изменения?:

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
var
 Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
 for i:=0 to 7 do begin
   Form2:=TForm2.Create(Application);
   Form2.Caption:=IntToStr(i);
   Form2.Show;
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
 for i:=0 to Screen.FormCount-1 do
   if Screen.Forms[i].Caption='3' then begin
     Form2.Panel2.Caption:='Сменили надпись';
     break;
   end;
end;

end.

unit Unit2;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls;
type
 TForm2 = class(TForm)
   Panel1: TPanel;
   Panel2: TPanel;
 private
   { Private declarations }
 public
   { Public declarations }
 end;
var
 Form2: TForm2;
implementation
{$R *.dfm}
end.


Fr   (2009-09-22 17:44:00) [26]

спасибо


Сергей М.   (2009-09-22 17:37:00) [27]

Существующими в ран-тайм формами заведует объект Screen и его св-ва FormCount, Forms


{RASkov}   (2009-09-22 17:36:00) [28]

Screen.FormCount
Screen.Forms[]


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо