Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Вниз

Создание компонента во время работы программы 


Михаил   (2002-04-15 12:07) [0]

Подскажите плз, где можно почитать о том, как добавлять на форму компоненты во время работы программы (а не заранее, а потом просто делать ее видимой).
Например по какому-то событию добавить на форму Label...
Или объясните как это сделать

Заранее благодарен



Игорь Шевченко   (2002-04-15 12:17) [1]

День добрый,


with TLabel.Create(Self) do begin
Parent := Self;
BoundsRect := Rect(10,10,100,100);
Caption := "Созданная метка";
end;


С уважением,



Михаил   (2002-04-15 12:30) [2]

Спасибо. Если можно еще один вопрос:

если ей потом присвоить имя, например

with TLabel.Create(Self) do begin
name:=mylabel;
Parent := Self;
BoundsRect := Rect(10,10,100,100);
Caption := "Созданная метка";
end;

то уничтожить ее можно будет mylabel.destroy, а возможно ли ее уничтожить без присвоения имени?



Виктор Щербаков   (2002-04-15 12:41) [3]


> то уничтожить ее можно будет mylabel.destroy,

Нет. Так нельзя.
Нужно объявить переменную типа TLabel и присваивать ей адрес созданной метки:

var
NewLabel: TLabel;
begin
...
NewLabel := TLabel.Create(Self);
with NewLabel do begin
name:=mylabel;
Parent := Self;
BoundsRect := Rect(10,10,100,100);
Caption := "Созданная метка";
end;
...


NewLabel.Free; // Уничтожаем.



Anatoly Podgoretsky   (2002-04-15 12:42) [4]

Прочитай хелп по поводу destroy
А уничтожить можно все, имя не обязательно



Игорь Шевченко   (2002-04-15 12:42) [5]

День добрый,

Если вы сделаете не
with TLabel.Create, а объявите переменную в форме, например


type
TForm1 = class (TForm)
...
private
FNewLabel : TLabel;
...
procedure EventForLabelCreate ();

end;

procedure TForm1.EventForLabelCreate ();
begin
FNewLabel := TLabel.Create(Self);
with FNewLabel do begin
....
end;
end;


То потом сможете обращаться к этой метке, как к любой другой, в том числе и удалять ее.

С уважением,



Михаил   (2002-04-15 13:27) [6]

/to Виктор Щербаков

>>Нет. Так нельзя.

Почему нельзя???

var
mylabel: TLabel;
begin
...
with TLabel.Create(Self) do begin
name:=mylabel;
Parent := Self;
BoundsRect := Rect(10,10,100,100);
Caption := "Созданная метка";
end;...

mylabel.destroy

Работает


NewLabel.Free;



MBo   (2002-04-15 13:33) [7]

>Михаил
здесь срабатывает, потому что mylabel.destroy относится к имени переменной, а не к имени кнопки. кстати,
name:="mylabel";
надо писать. по имени можно находить с помощью FindComponent



Донской   (2002-04-15 15:20) [8]

А можно ли программно добавлять tabsheet на Pagecontrol во время работы?
Я сделал как вы сказали выше, но ее не видно, хотя и сообщений об ошибке тоже не выдается...



Виктор Щербаков   (2002-04-15 15:26) [9]

Донской (15.04.02 15:20)
Пример из хэлпа:
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
with PageControl1 do
for i := 0 to 9 do
with TTabSheet.Create(Self) do
begin
PageControl := PageControl1;
Pages[i].TabVisible := (i mod 2 = 0);
Caption := "PageIndex: " +
IntToStr(Pages[i].PageIndex) + " TabIndex: " +
IntToStr(Pages[i].TabIndex);
end;
end;



Донской   (2002-04-15 15:53) [10]

Класс..
Я, значит, забыл назначить pagecontrol..
Snks



Михаил   (2002-04-15 17:18) [11]

А созданному таким образом компоненту можно програмно присваивать какие-то обработчики событий? Типа по onclick выполнение какой-нить процедуры...

Если да, то как.

Заранее спасибо



Anatoly Podgoretsky   (2002-04-15 17:39) [12]

Ничем не отличается от других свойств

OnClick :=



Fantasist   (2002-04-16 08:25) [13]

Кстати, если вы создали динамически контрол на TWinControl, то уничтожать его не надо, ибо это делает сам владелец при уничтожении, а если вы его убъете сами, то аксес виолэйшин должен возникнуть.



Игорь Шевченко   (2002-04-16 09:52) [14]

День добрый, Fantasist,

Кстати, это относится к любому компоненту, и убивание самостоятельно не влечет за собой никакой беды, так как в деструкторе TComponent вызывается Owner.RemoveComponent (Self)

С уважением,




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.017 c
6-94535           Yuraz                 2002-01-18 17:00  2002.04.29  
Как отправить поля POST NMHTTP


14-94539          kaif                  2002-03-21 00:05  2002.04.29  
Как купить D5 Pro?


14-94573          DimaIv                2002-03-20 19:47  2002.04.29  
Что означает термин, структурное программирование?


3-94331           insmod                2002-04-05 19:14  2002.04.29  
Проблема


4-94612           Grim Rider            2002-02-22 06:24  2002.04.29  
PostMessage или приказано