Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2010, 01:11   #1
Shad0w64bit
Пользователь
 
Регистрация: 09.05.2009
Сообщений: 12
По умолчанию Динамическое создание TabSheet по шаблону

Здравствуйте! Возможно ли создавать TabSheet в PageControl на основе шаблона... т.е. создать один TabSheet с компонентами (наподобии окна сообщений в qip ), а далее на его основе добавлять новые вкладки.
Если можно то пример))
Shad0w64bit вне форума Ответить с цитированием
Старый 23.08.2010, 01:22   #2
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Цитата:
Возможно ли создавать TabSheet в PageControl на основе шаблона
Возможно.
Цитата:
а далее на его основе добавлять новые вкладки
Думаю, вам можно либо с фреймами "познакомиться" поближе, либо в цикле перебирать все контролы на том TabSheet, на котором они уже созданы и, соответственно, создавать на том, котором надо.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 23.08.2010, 01:27   #3
Shad0w64bit
Пользователь
 
Регистрация: 09.05.2009
Сообщений: 12
По умолчанию

Я так понял что надо создать фрэйм с заранее заготовленными компонентами а при создании таба в нем создавать фрейм? и вопрос как тогда обратится например к Edit на фрейме или обработать нажатие кнопки..
Shad0w64bit вне форума Ответить с цитированием
Старый 23.08.2010, 12:35   #4
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Эта процедура сойдёт за шаблон?

Код:
var 
tab: TTabSheet;   
Memo: Tmemo;     


procedure addTab;
begin
  tab:=TTabSheet.Create(self);
  tab.PageControl:=PageControl1;
  tab.Caption:='Новая  вкладка '+IntToStr(PageControl1.PageCount);
  tab.PageControl.ActivePage:=tab;

  //////////////////////////
  memo:=TMemo.Create(self);
  memo.Parent:=Tab;
  memo.Align:=alClient;
  memo.SetFocus;

  Form1.Caption:=objTab.Caption;
end;
dr.Chas вне форума Ответить с цитированием
Старый 23.08.2010, 12:50   #5
Shad0w64bit
Пользователь
 
Регистрация: 09.05.2009
Сообщений: 12
По умолчанию

Сейчас приблизительно все так и сделано.. Но некоторые компоненты уезжают и в них почему то не работает Anchors akRight. Хотелось бы реализовать это как то проще.

Мой вариант создания табов:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  PageControl1.TabIndex:=PageControl1.PageCount-1;

  with TTabSheet.Create(Self) do
  begin
    PageControl := PageControl1;
    Caption :='Новая  вкладка'+IntToStr(PageControl1.PageCount);
    PageControl1.SelectNextPage(True);
 end;
end;
А далее создаются компоненты на этой вкладке
Shad0w64bit вне форума Ответить с цитированием
Старый 23.08.2010, 13:15   #6
Shad0w64bit
Пользователь
 
Регистрация: 09.05.2009
Сообщений: 12
По умолчанию

Приблизительно разобрался:
главная форма:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  PageControl1.TabIndex:=PageControl1.PageCount-1;

  //создание таба
  with TTabSheet.Create(Self) do
  begin
    PageControl := PageControl1;
    s:=IntToStr(PageControl1.PageCount);
    Caption :='Новая  вкладка'+s;
    PageControl1.SelectNextPage(True);
    tag:=strtoint(s);
 end;
 //Создание фрейма
 with TEFrame.Create(Self) do
  begin
    Parent:=PageControl1.Pages[PageControl1.TabIndex];
    Name:='frame'+s;
    tag:=strtoint(s);
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//Заполнение поля Edit
  TEdit(PageControl1.Pages[PageControl1.TabIndex].Controls[0].FindComponent('Edit1')).Text:='ля л ля ля';
end;
Фрэйм:
Код:
procedure TEFrame.Button1Click(Sender: TObject);
begin
//информация
Showmessage('Таб-'+inttostr(self.Tag)+#13#10+
  Edit1.Text);
end;
Это то что у меня получилось. Работает!! но раньше дело с динамическими объектами не имел.. подскажите возможно как то упростить этот код или записать его более правильно т.е. создание компонентов иным способом или обрашение к ним
Shad0w64bit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание объектов panda88 Общие вопросы Delphi 4 24.01.2010 18:16
Динамическое создание Edit Лёшка228 Общие вопросы Delphi 3 29.11.2009 17:26
Динамическое создание ActionMainMenuBar Paul Hindenburg Общие вопросы Delphi 4 12.11.2009 12:07
Динамическое создание объекта Fruit Общие вопросы Delphi 5 24.01.2008 11:00
Динамическое создание объектов LepihinMS Общие вопросы Delphi 18 05.07.2007 23:31