Форум: "Основная";
Текущий архив: 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)
С уважением,
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c