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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2017, 17:57   #1
woziti
Пользователь
 
Регистрация: 09.08.2017
Сообщений: 10
По умолчанию Динамическое создание listview

Добрый день, учусь создавать компоненты динамически)
Подскажите, создал TabSheet и listview на на них.
Код:
procedure TForm2.Button2Click(Sender: TObject);
var
  TAB:     TTabSheet;
  List: TlistView;
begin
TAB:=TTabSheet.Create(Form2);
TAB.Name:=Format('TAB%d',[pagecontrol1.PageCount+1]);
with TTabSheet(FindComponent(Format('TAB%d',[pagecontrol1.PageCount+1]))) do
    begin
      caption:=Format('TAB%d',[pagecontrol1.PageCount+1]);
      tab.PageControl:=   Pagecontrol1;
    end;


LIST:=TListview.Create(TAB);
LIST.Name:=Format('LIST%d',[pagecontrol1.PageCount+1]);
with TListview(FindComponent(Format('LIST%d',[pagecontrol1.PageCount+1]))) do
    begin
      list.Parent:=TAB;
      list.Align:=alclient;
      list.ViewStyle:=vsReport;
      list.GridLines:=true;

      list.AddItem('Первая колонка',nil);
      list.AddItem('Вторая колонка',nil);
    end;
end;

Проект компилится нормально.
Пытаюсь добавить содержимое в только что созданые листвиевы кодом
Код:
procedure TForm2.Button3Click(Sender: TObject);
begin
 //  TTabSheet(FindComponent('TAB1')).Caption:='000';

 with Tlistview(FindComponent('LIST2')).Items.Add do
 begin
 caption:='dasdsa';
 subitems.Add('d1');

 end;

end;
и программа вылетает. Судя по всему я не правильно добавляю колонки?
я уже и так пробовал

Код:
      list.Columns.Add;
      list.Columns.Add;
      list.Column[0].Caption:='Колонка 1';
      list.Column[1].Caption:='Колонка 2';

Если создаю listview вручную, то получается его заполнить динамически.
woziti вне форума Ответить с цитированием
Старый 17.08.2017, 18:11   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Не находит на форме и не найдет, поскольку создавал с AOWner закладкой. В этой закладке найдет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.08.2017, 18:17   #3
woziti
Пользователь
 
Регистрация: 09.08.2017
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не находит на форме и не найдет, поскольку создавал с AOWner закладкой. В этой закладке найдет
можно чуть подробнее ?) Не понятно что такое AOWner
woziti вне форума Ответить с цитированием
Старый 17.08.2017, 18:18   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Не понятно что такое AOWner
Код:
TListview.Create(TAB)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.08.2017, 18:24   #5
woziti
Пользователь
 
Регистрация: 09.08.2017
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
TListview.Create(TAB)
вроде заработало вот так) спасибо
Код:
LIST:=TListview.Create(Form2);
woziti вне форума Ответить с цитированием
Старый 17.08.2017, 18:50   #6
woziti
Пользователь
 
Регистрация: 09.08.2017
Сообщений: 10
По умолчанию

А как это все дело уничтожить?
Код:
Tlistview(FindComponent('LIST'+inttostr(pagecontrol1.ActivePageIndex) )).Free;
TTabSheet(FindComponent('TAB'+inttostr(pagecontrol1.ActivePageIndex) )).Free;
в принципе, уничтожает вкладку и Tlistview. Но если потом попытаться добавить вкладку \ добавить запись, выбивает в ошибку...
В теории, если list0 уничтожился он же не должен влиять на созданные перед ним компоненты? так-как я потом обращаюсь к текущей вкладке - листвиему pagecontrol1.ActivePageIndex
Код к удаленному list0 не обращается...

___
кажется понял... да, надо имена уникальные делать, порядковые номера не покатит...

Последний раз редактировалось woziti; 17.08.2017 в 18:56.
woziti вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание компонента develsnik Общие вопросы Delphi 1 18.09.2013 20:43
Динамическое создание romanzi Общие вопросы Delphi 1 24.08.2011 12:20
динамическое создание компонентов DOLBY Компоненты Delphi 10 17.10.2010 14:03
Динамическое создание объектов panda88 Общие вопросы Delphi 4 24.01.2010 18:16
Динамическое создание формы. Son Общие вопросы Delphi 1 04.02.2009 15:33