Q:
Hi,
I need to create a component at runtime and ‘drop’ it
on a certain page of a multipage TNotebook – how
can this be done since the Tnotebook doesn’t expose
the pages – just their ‘names’.
For various reasons I do not want to a TPageControl.
A:
Well, i havn’t found an ‘easy’ way but this:
Use this function to get the TPage by it’s Caption:
[code lang=”delphi”]function GetPageByCaption(NoteBook:TNoteBook; Cap:string):TPage;
var
i : integer;
begin
result := nil;
for i := 0 to NoteBook.ControlCount-1 do
begin
if NoteBook.Controls[i] is TPage then
begin
if UpperCase(TPage(NoteBook.Controls[i]).Caption) = UpperCase(Cap)
then
begin
result := TPage(NoteBook.Controls[i]);
break;
end;
end;
end;
end;
[/code]
Then you could do something like this:
[code lang=”delphi”]var
ThePage : TPage;
begin
ThePage := GetPageByCaption(NoteBook1, ‘Page1’);
if ThePage <> nil then
begin
MyButton := TButton.Create(self);
MyButton.Parent := ThePage;
MyButton.Top := 10;
MyButton.Left := 20;
end;
end;
[/code]
have fun!
Boris Nienke
Edit: …Much easier way is this:
[code lang=”delphi”]begin
MyButton := TButton.Create(self);
with MyButton do
begin
Parent := Notebook1.Pages.Objects[0] As TWinControl;
Top := 10;
Left := 20;
end;
end;[/code]
[tags]Delphi, Components, Notebook[/tags]
0 Kommentare zu “Putting controls on a page at runtime”