Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание 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 нужен соответствующий


Наверх

Титульная страница Поиск, карта сайта Написать письмо