Dynamicznie tworzenie komponentu na TTabbedNotebook

0

Jak stworzyć dynamicznie komponent na TTabbedNotebook ?

0

w google wpisz: delphi dynamiczne zakładki
pewnie coś tam znajdziesz jak robić zakładki
a komponenty to:
google: delphi dynamiczne komponenty
(i pamiętaj o Parent (rodzic)). W necie dość dobrze opisują wszystko, a sam kod to kilka linijek kodu

0

Dobra dzięki, ale teraz nowy problem jak zrobić aby nazwę aktywnego memo przekazać do zmiennej CurProj

0
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    PageControl1: TPageControl;
    Button2: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure OnZmiana(Sender: TObject); //OnChange komponentu, nasza procedurka
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  zakladka: TTabSheet;
  rich1: TRichEdit;
  i: integer;
begin

  i:= PageControl1.PageCount;

  //tworzenie zakladki
  zakladka:= TTabSheet.Create(self);
  zakladka.PageControl:= PageControl1;
  zakladka.Caption:= 'zakładka ' + IntToStr(i); //czyli Zakladka 0, Zakladka 1, Zakladka 2 itd
  zakladka.Show;

  //utworzenie RichEdit
  rich1:= TRichEdit.Create(self);
  rich1.Align:= alClient; //cały obszar
  rich1.Parent:= zakladka; //rodzicem jest zakładka
  rich1.Name:= 'RichEdit' + IntToStr(i); //nadanie nazwy
  rich1.OnChange:= OnZmiana; //za zdarzenie (event) OnChange komponentu odpowie procedura OnZmiana()
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //wyczyszczenie RichEdita na aktywnej zakładce
  (PageControl1.ActivePage.Controls[0] as TRichEdit).Clear;
end;

procedure TForm1.OnZmiana(Sender: TObject);
begin
  //zdarzenie OnChange komponentu (czyli rich1)
  //dwa sposoby na wyświetlenie nazwy komponentu, który zmieniamy (bo OnChange)
  Form1.Caption:= (Sender as TRichEdit).Name;
  Label1.Caption:= TRichEdit(Sender).Name;
end;

end.

Na szybko wykodziłem to coś...
Na formie 2 Buttony, jeden PageControl i jeden Label (nazwy domyślne)...
Nie wiem, czy dobrze zrobiłem i nie wiem, czy o to ci lata... Sender to ten komponent, na którym coś robisz

//edit
znalazłem jeszcze stronkę: http://www.unit1.pl/197,txt

0

UWIELBIAM WAS, WSZYSTKO DZIAŁA THX!

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