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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2008, 18:02   #1
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
Плохо Создание компонентов во время работы программы

Здравствуйте, при написании большой проги нужно, чтобы не тратилось много памяти, поэтому мне посоветовали создавать компоненты TEdit, TImage, TLabel и др. во время работы проги. Пожалуйста, напишите примерный код создания компонентов во время работы проги и действия с ними, например считать инфу с только что созданного едита. Заранее благодарен!
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 02.04.2008, 19:00   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Код:
TForm1 = class(TForm)   
......
public  
Edit1: TEdit;   
......
end;
......
Edit1:=TEdit.Create(self);   
Edit1.Parent:=self;
_Dmitry вне форума Ответить с цитированием
Старый 02.04.2008, 19:09   #3
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

А теперь можно писать так: s:=strtoint(edit1.text); ?
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 02.04.2008, 19:12   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Конечно, обращайтесь, как к обычному Edit-y.
_Dmitry вне форума Ответить с цитированием
Старый 02.04.2008, 19:21   #5
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

Круто!
Значит не загромождает прогу!А создается во время работы проги
А массив каринок например: var image:array[1..5] of TImage ?
потом обращаться image[1].left:=100;? так?
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 02.04.2008, 19:28   #6
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

а как с процедурами? ошибку не выдаст, когда компилирует ведь компонент еще не создан, а мне нужно уже процедуру прописать для компонента, которого еще нет, который будет создан !
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 02.04.2008, 19:28   #7
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Точно так, но прежде чем обращаться к компоненту его нужно создать:
Код:
for i:=1 to 5 do
  begin
    Image[i]:=TImage.Create(self);      
    Image[i].Parent:=self;
  end;
_Dmitry вне форума Ответить с цитированием
Старый 02.04.2008, 19:33   #8
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Надеюсь, никто не будет против, если уточню, что, при такой постановке задачи, лучше всё-таки создавать целиком формы, а не контролы на них. Так надёжнее.
B_N вне форума Ответить с цитированием
Старый 02.04.2008, 19:53   #9
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Сообщение от Rusl92 Посмотреть сообщение
а как с процедурами? ошибку не выдаст, когда компилирует ведь компонент еще не создан, а мне нужно уже процедуру прописать для компонента, которого еще нет, который будет создан !
Пример создания кнопки:
Код:
  TForm1 = class(TForm)
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;
......

procedure TForm1.Button1Click(Sender: TObject);
begin
......
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Button1:=TButton.Create(self);
  Button1.OnClick:=Button1Click;  //здесь подцепляем процедуру
  Button1.Parent:=self;
end;
Полностью согласен с B_N, лучше все контролы создавать в designtime, а формы создавать не сразу при запуске программы (файл *.dpr)
Код:
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.Run;
end.
а по мере надобности.

Последний раз редактировалось _Dmitry; 02.04.2008 в 20:00.
_Dmitry вне форума Ответить с цитированием
Старый 02.04.2008, 20:39   #10
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Или поиск по форуму
http://www.programmersforum.ru/showt...E7%E4%E0%F2%FC
сообшение #6
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранить внутрь себя во время работы Олвин Помощь студентам 6 29.08.2008 20:13
Создание обьектов во время работы программы Rusl92 Общие вопросы Delphi 4 11.08.2008 17:03
Время работы WINDOWS В_И_К_Т_О_Р Помощь студентам 8 30.01.2008 12:42
Скрытие главной формы во время работы приложения Gorin Общие вопросы Delphi 7 23.08.2007 19:44
Время работы сортировок Боня Помощь студентам 1 10.02.2007 17:53