![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание TabSheet динамически [D7]
WestNik © (2007-11-30 09:35:00)Здравствуйте! Помогите пожалуйста!
Имеется PageControl с несколькими страницами (TabSheet). Страницы содержат StringGrid, несколько кнопок и лейблев. Нужно, чтобы в процессе выполнения программы, по нажатию кнопки создавалась/удалялась новая страница. Страницу-то создать динамически могу, а вот как в нее вставить содержимое не знаю.
Заранее спасибо!
Dennis I. Komarov (2007-11-30 12:38:00) [1]> [9] ЮЮ © (30.11.07 11:32)
Завтра он перетащит код еще куда-нить, хотя тут согласен, я не посмотрел на процедуру, а только на код. Но все равно не верно. Будет убиваться деструктором формы, что не есть гуд. Захочет убить свой табщит, а стринггрид останется.
ЮЮ (2007-11-30 11:32:00) [2]> > StringGrid := TStringGrid.Create(Self);
>
> Почему у тебя StringGrid сам по себе - свой собственный
Он не 'свой собственный', а "форменный", ибо создается в методе формыprocedure TForm1.TabSh( Edit: TEdit);
Dennis I. Komarov (2007-11-30 11:30:00) [3]> Последние 2 строки не работают.
> С Parent не работал
Что значит не работают.
> StringGrid := TStringGrid.Create(Self);
Почему у тебя StringGrid сам по себе - свой собственный
> С Parent не работал
Ну тогда и нечего в disign-time не создавал :)
WestNik (2007-11-30 11:29:00) [4]Спасибо всем!!!! Работает! :)
ЮЮ (2007-11-30 11:28:00) [5]> StringGrid := TStringGrid.Create(Self);
тогда уж TStringGrid.Create( TabSheet); вдруг и удалять придется динамически.
Goric (2007-11-30 11:23:00) [6]begin
TabSheet := TTabSheet.Create(Self);
TabSheet.Caption := Edit.Text;
TabSheet.PageControl := PageControl2;
StringGrid := TStringGrid.Create(Self);
StringGrid.Parent := TabSheet;
end;
ЮЮ (2007-11-30 11:22:00) [7]StringGrid-у надо ещё Parent установить, чтобы виден стал.
WestNik (2007-11-30 11:19:00) [8]>Dennis I. Komarov © (30.11.07 10:07) [1]
>Может тебе достаточно юзать св-во visible?
Думал над этим, но 40-50 страниц вручную как-то не охота рисовать.
Код следующий:
procedure TForm1.TabSh( Edit: TEdit);
var
PageControl: TPageControl;
TabSheet: TTabSheet;
StringGrid: TStringGrid;
begin
TabSheet := TTabSheet.Create(Self);
TabSheet.Caption := Edit.Text;
TabSheet.PageControl := PageControl2;
StringGrid := TStringGrid.Create(Self);
StringGrid.Visible := true;
end;
Последние 2 строки не работают.
С Parent не работал
Юрий Зотов (2007-11-30 10:09:00) [9]> WestNik (30.11.07 09:35)
> как в нее вставить содержимое не знаю.
Точно так же - Create, SetParent, SetBounds и пр. Но может быть, будет проще создать страницы в design-time, а потом только показывать нужную?
Dennis I. Komarov (2007-11-30 10:07:00) [10]Может тебе достаточно юзать св-во visible?
Если нет - выкладывай чего и как создаешь...
Parent нужен соответствующий