Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-94365
voland0
2002-04-17 13:42
2002.04.29
Не наступает onMouseDown


1-94486
Up
2002-04-16 15:15
2002.04.29
Custom Menu


4-94637
celestial
2002-02-25 08:56
2002.04.29
Как запретить окну быть активным?


1-94478
Марина
2002-04-16 08:37
2002.04.29
Install Shield Express


7-94590
Varfolomey
2002-01-20 20:29
2002.04.29
RS232 - контроль чётности, что делать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский