Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.29;
Скачать: CL | DM;

Вниз

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

 
Михаил ©   (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)

С уважением,



Страницы: 1 вся ветка

Текущий архив: 2002.04.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
1-94372
Jaxtor
2002-04-17 14:21
2002.04.29
Событие при максимизации главной формы


14-94570
Почемучка
2002-03-20 12:33
2002.04.29
QReport в Delphi 5.0


1-94498
Андрей Л
2002-04-16 00:05
2002.04.29
лимит ListBox-а.


4-94639
Grim Rider
2002-02-20 13:20
2002.04.29
Hook


1-94508
Sound
2002-04-17 01:06
2002.04.29
Как узнать полный путь до exe файла моей программы?