Jak stworzyć dynamicznie komponent na TTabbedNotebook ?
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
Dobra dzięki, ale teraz nowy problem jak zrobić aby nazwę aktywnego memo przekazać do zmiennej CurProj
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
UWIELBIAM WAS, WSZYSTKO DZIAŁA THX!
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.