TPageControl - tworzenie nowych okien

0

Witam otoz mam problem z utworzeniem okien. Niestety zawracam glowe bo musze szybko skonczyc projekt a nie widze rozwiazan na google...

Otoz tworzenie po kliknieciu na przycisk:

procedure TForm1.NowyClick(Sender: TObject);
var zakladka : TTabSheet;
begin
zakladka := TTabSheet.Create(Self);
zakladka.Caption := 'Nowa';
zakladka.PageControl := PageControl1;
zakladka.Show;
end;

<- i to dziala
Teraz zamiast w buttonie chcialbym to zrobic w procedurze a wiec robie sobie tak:

procedure newtab(name: string);
var
  zakladka : TTabSheet;
begin
  zakladka := TTabSheet.Create(Self);
  zakladka.Caption := name;
  zakladka.PageControl := PageControl1;
  zakladka.Show;
end;

I sypie mi bledy:
Undeclared identifier: 'Self'
Undeclared identifier: 'PageControl1'
Could not compile used unit 'OnetKlient.pas'

wie ktos moze o co chodzi?

Dziekuje z gory za odpowiedz i prosze wybaczcie za tak podstawowe pytania.

0

Tak wiemy. Banalna podstawa. Korzystasz z elemntów klasy TForm w kodzie procedury, a definiujesz ją poza tą klasą. Czyli przed nazwą procedury dodaj TForm1. I oczywiście zadeklaruj ją w sekcji public. Inne rozwiązanie to robić to w bloku with Form1 do begin .... end; Ale wtedy nie możesz używac Self. Poza tym pytania o takie podstawy zadawaj zawsze w dziale Newbie. Przenoszę tam ten wątek.

0

Olesio zawsze zadziwiala mnie szybkosc czasu Twojej odpowiedzi... :)

Problem rozwiazany dzieki.

0

Procedura NewTab ma być elementem klasy TForm1, a nie Form1 czyli zmiennej. Cytuję siebie:

Czyli przed nazwą procedury dodaj TForm1.

Deklaracje masz ok, tam się nie dodaje TForm1 przed nazwą metody. Czym się różni deklaracja, od definicji można wygooglować i przeczytać chociażby w kompendium Delphi na 4programmers. A szybkość jest jaka jest, bo akurat siedziałem na forum :)

0
olesio napisał(a)

Procedura NewTab ma być elementem klasy TForm1, a nie Form1 czyli zmiennej. Cytuję siebie:

Czyli przed nazwą procedury dodaj TForm1.

Deklaracje masz ok, tam się nie dodaje TForm1 przed nazwą metody. Czym się różni deklaracja, od definicji można wygooglować i przeczytać chociażby w kompendium Delphi na 4programmers. A szybkość jest jaka jest, bo akurat siedziałem na forum :)

Wygooglowalem jak poprawnie 'zaimplementowac' procedure w sekcji public teraz juz dziala dzieki za nakierowanie :)
ps. jakby ktos stanal na tym samym co ja to rozwiazanie:

procedure TForm1.newtab(name: string);

i sekcja public:

  public
    procedure newtab(name:String);
  end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1