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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2010, 19:16   #1
фдучмь
Новичок
Джуниор
 
Регистрация: 19.08.2010
Сообщений: 2
По умолчанию Массив форм или...?

Добрый день,

стоит следующая задача - при перемещении по TreeView или ListView показывать окна с различным содержанием. Элементов в Treeview или Listview достаточно много, и создавать множество форм под каждый из них не хочется. Посоветуйте, пожалуйста, как можно создавать формы и наполнять их различным содержимым динамически, причем типы, кол-во и расположение объектов должно зависеть от индекса ноды TreeView или ListView.


Алексей.
фдучмь вне форума Ответить с цитированием
Старый 20.08.2010, 01:09   #2
GoodDA
фрилансер
Форумчанин
 
Аватар для GoodDA
 
Регистрация: 18.07.2008
Сообщений: 107
По умолчанию

гдето так,
вместо random'ов подставляй характеристики выбранной ноды

Код:
procedure  generateForm(sel:tform);
var i,h,n:integer;
    t:twincontrol;
    l:tlabel;
    j:char;
begin
  h:=10;
  randomize;
  n:=3+random(8);
  sel.caption :='';
  for j:= 'а' to 'я' do if random(100)<25 then sel.caption := sel.caption+j;
  for i:= 1 to n do
  begin
    case random(4) of
      0: begin t:=tedit.Create(sel);   for j:= 'а' to 'я' do if random(100)<25 then tedit(t).text := tedit(t).text+j; end;
      1: begin t:=tcombobox.Create(sel); end;
      2: begin t:=tListBox.Create(sel);  end;
      3: begin t:=TDateTimePicker.Create(sel);    end;
    end;
    t.Left := 150;
    t.top := h+10;
    t.Width := 150;
    t.Parent := sel;
    L:=tLabel.Create(sel);
    L.Left := 10;
    L.top := h+10;
    L.Parent := sel;
    L.Caption := 'Подпись элемента № '+inttostr(i);
    h:=h+10+ t.Height;
  end;
  sel.Height := h+50;
end;

//пример вызова
procedure TForm1.Button1Click(Sender: TObject);
var ff:tform;
begin
  ff:=tform.Create(self);
  generateForm(ff);
  ff.Parent:=self;
  ff.Show;
end;

Последний раз редактировалось GoodDA; 20.08.2010 в 01:31.
GoodDA вне форума Ответить с цитированием
Старый 20.08.2010, 11:52   #3
фдучмь
Новичок
Джуниор
 
Регистрация: 19.08.2010
Сообщений: 2
По умолчанию

Спасибо за помощь!
фдучмь вне форума Ответить с цитированием
Старый 20.08.2010, 12:14   #4
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

И будут эти формы плодиться долго и в большом количестве... создавая не нужные дубликаты уже созданных ранее форм... Что-то я не вижу удаления форм... Заголовок топика "Массив форм или..."
В свое время я сделал именно "или". Т.е. динамически создавал на панели нужные компоненты и располагал их в требуемом порядке. При переходе к новой ноде (в моем случае к другому пункту меню) я удалял все созданные компоненты на панели и формировал новые, в зависимости от требований пункта меню...
Перемешивай дело с бездельем и не сойдешь с ума...

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ассоциативный массив или что это? Manonia Общие вопросы .NET 0 18.05.2010 07:31
Массив. или FREE Pascal или MicrosoftQuick Basic. rkimnbgvf Помощь студентам 5 24.03.2010 20:57
цикл или массив wasabi Фриланс 11 27.01.2010 21:23
Кэш память, или динамический массив? slips JavaScript, Ajax 1 07.09.2009 17:38