Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Delphi создание объекта (http://forum.oszone.net/showthread.php?t=80050)

ferrum2688 26-02-2007 13:37 555435

Delphi создание объекта
 
Как в Делфи во время выполнения создавать объекты класса.
Например создать массив объектов кнопка и чтоб при создании кнопки визуально появлялись на форме.

hasherfrog 26-02-2007 14:44 555454

FAQ
http://www.helloworld.ru/texts/comp/...hi/faq3/f1.htm

ferrum2688 28-02-2007 02:52 556210

Спасибо, прочитал. Но мне нужно ещё вот что: чтобы создаваемый объект вызывал в ответ на событие мою(единственную ) процедуру и чтоб она могла работать с полями вызвавшего её объекта(), а также с полями вышестоящих.

pva 28-02-2007 22:04 556584

Цитата:

а также с полями вышестоящих
выше - это где? рассказываю как понял вопрос:
Код:

type TButtonBox = class (TPanel)
private
  flastClicked: TButton;
  procedure onButtonClick(sender: TObject);
public
  procedure addButton(name: string; rect: TRect);
end;

procedure TButtonBox.addButton(name: string; rect: TRect)
var button1: TButton;
begin
  button1 := Tbutton.Create(self);
  button1.left := rect.left;
  button1.top := rect.top;
  button1.width := rect.right-rect.left;
  button1.height := rect.bottom-rect.top;
  button1.caption := name;
  button1.onClick = self.onButtonClick; // будет вызвано, причём от имени екземпляра self
end;

procedure TButtonBox.onButtonClick(sender: TObject)
begin
  // используем поля TButtonBox
  flastClicked := TButton(sender);
end;

это только пример, он не будет работать, так как не указаны конструкторы класса TButtonBox. Не забудьте дописать всё необходимое перед компиляцией.
По сути Delphi строит каждый TForm1 как раз таким образом, основываясь на данных в описании формы (текстовый файл, который хранится прямо в экзешнике).


Время: 07:17.

Время: 07:17.
© OSzone.net 2001-