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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2009, 15:28   #1
Mutagena
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 39
Вопрос Генерация компонентов в рантайме

Подскажите пожалуйста, каким образом сгенерировать новые компоненты на форме во время работы программы?
Это нужно для того, что сперва неизвестно сколько однотипных компонентов необходимо.
Mutagena вне форума Ответить с цитированием
Старый 29.11.2009, 15:31   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

http://www.programmersforum.ru/showthread.php?t=48845
+Поиск по форуму "Динамическое создание"
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.11.2009, 16:19   #3
Mutagena
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 39
По умолчанию

Ничего не поняла. Можно пример, например, как динамически создать кнопочку или поле Edit?
Mutagena вне форума Ответить с цитированием
Старый 29.11.2009, 16:29   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

дополнительный поиск по форуму никогда не мешал:
Код:
var knop: array of tspeedbutton;
...
kn:= 20; // допустим кол-во кнопок =20

setlength(knop, length(kn)); //привязываем кол-во кнопок к к-ву названий
  for i:= low(knop) to high(knop) do begin
   knop[i]:= Tspeedbutton.Create(nil);
   with knop[i] do begin
    Font.Color:= clwhite; font.name:= 'arial'; font.size:= 7;
    flat:= true;
    width:= 70;
    height:= 18;
    left:= 100 + (width*i)+(i*2);
    tag:= i;
    //onclick:= to_knop;
    caption:= kn[i];
    panel.InsertControl(knop[i]);
   end
  end;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.11.2009, 16:46   #5
Mutagena
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 39
По умолчанию

А переменная kn должна быть какого типа?
Mutagena вне форума Ответить с цитированием
Старый 29.11.2009, 16:50   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
А переменная kn должна быть какого типа?
а как по-вашему? и почему-бы "length(kn)" просто не заменить на число...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.11.2009, 17:16   #7
Mutagena
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 39
По умолчанию

Потому что в приведённом вами примере есть строка кода:
caption:= kn[i];
Mutagena вне форума Ответить с цитированием
Старый 29.11.2009, 17:31   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Возможно, вам нужно немного другое?
Вот простейший пример - по нажатию на кнопку каждый раз будет создаваться новая кнопка (прямо на форме):
Код:
var
  Form1: TForm1;
  i: integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var mybut: TButton;
begin
mybut:=TButton.Create(self);
mybut.Caption:='NewButton';
mybut.Parent:=Form1;
mybut.Top:=i*mybut.Height+10;
Inc(i);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
end;

end.
С капшенами сами решите...
А поиском нужно пользоваться (читайте правила).
Это очень просто - там, где вам написано "Добро пожаловать", есть пункт меню "Поиск". Нажмите и введите слова, которые вам предложили в п.2.
Ответов на ваш вопрос будет до изумления много...
Например, самый недавний
http://www.programmersforum.ru/showthread.php?t=73010

Последний раз редактировалось mihali4; 29.11.2009 в 17:39.
mihali4 вне форума Ответить с цитированием
Старый 29.11.2009, 22:47   #9
Mutagena
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 39
По умолчанию

Спасибо, разобралась
Mutagena вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация текста apocalypce Помощь студентам 4 10.08.2009 13:01
доступ к виз компонентам созданным в рантайме amandra Общие вопросы Delphi 1 09.05.2009 22:17
Смена WndProc в рантайме VVVadim Win Api 1 28.04.2009 18:16
Timer в рантайме amandra Компоненты Delphi 1 28.11.2008 01:48
генерация паролей ozhjog Общие вопросы Delphi 3 02.07.2007 08:20