Mein Beispiel macht Folgendes:
Per Buttonclick kann ich in einem TPageControl neue TTabsheets anlegen. Jedes TTabsheet erhält ein eigenes Formular:
tab0 hat Form0, tab1 hat Form1, ...
Nachdem ich tab0 und tab1 erzeugt und angezeigt habe und dann auf tab0 klicke, wird mir aber Form1 statt Form0 angezeigt.
Um die Forms zu unterscheiden hat jedes seine eigene Nummer in der Anzeige.
Code: Alles auswählen
unit testtabu;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
StdCtrls,tabinu;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
act: TLabel;
pcon: TPageControl;
procedure change0(Sender: TObject);
procedure create0(Sender: TObject);
procedure neu_tab(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
var dbanz:integer;
var dbfeld:array[0..50] of TFtabin;
{ TForm1 }
procedure TForm1.create0(Sender: TObject);
begin
dbanz:=0;
width:=800;
height:=600;
end;
procedure TForm1.change0(Sender: TObject);
begin
act.caption:='aktiv wechsel zu tab'+inttostr(pcon.ActivePageIndex);
dbfeld[pcon.ActivePageIndex].aufruf;
end;
procedure TForm1.neu_tab(Sender: TObject);
var
i:integer;
newtab:ttabsheet;
z, zz:string;
begin
newtab:=ttabsheet.create(pcon);
newtab.PageControl:=pcon;
newtab.Name:='tab'+inttostr(dbanz);
newtab.Caption:=newtab.Name;
dbfeld[dbanz]:= TFtabin.Create(newtab);
dbfeld[dbanz].parent:=newtab;
z:='tabin'+inttostr(dbanz);
dbfeld[dbanz].start(z,dbanz);
pcon.ActivePageIndex:=dbanz;
dbanz:=dbanz+1;
end;
end.
Code: Alles auswählen
unit tabinu;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TFtabin }
TFtabin = class(TForm)
Label1: TLabel;
Label2: TLabel;
znr: TLabel;
zz: TLabel;
procedure create0(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
procedure start(t:String; tnr:integer);
procedure aufruf;
end;
var
Ftabin: TFtabin;
implementation
{$R *.lfm}
{ TFtabin }
var
aktnr:integer;
aktz:String;
procedure TFtabin.create0(Sender: TObject);
begin
width:=700;
height:=500;
aktnr:=0;
aktz:='';
end;
procedure TFtabin.aufruf;
begin
znr.caption:=inttostr(aktnr);
zz.caption:=aktz;
end;
procedure TFtabin.start(t:String; tnr:integer);
begin
width:=750;
height:=500;
aktnr:=tnr;
aktz:=t;
znr.caption:=inttostr(aktnr);
zz.caption:=aktz;
show;
end;
end.
Ich habe das Testprojekt als zip beigefügt.
Was ist mein gedanklicher Fehler ?