![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическое создание объекта [D6, Win2k]
Брат © (2004-11-29 12:43:00)Подскажите пожалуйста, как создать объект, к примеру кнопку, не объявляю при этом переменную TButton?
begin...end (2004-11-29 14:12:00) [1]> [6] Брат (29.11.04 13:55)
Используйте динамические массивы или TObjectList.
KSergey (2004-11-29 14:03:00) [2]> [6] Брат (29.11.04 13:55)
> дело в том что я незнаю сколько у меня будет таких компонентов
> - может быть один а может быть и сто
> не хочется объявлять сто переменных TButton :(
Оборжаться.
А грузить процессор FindComponent - это нормально??
Динамические массивы, к стати, именно для того и придумали чтобы неизвестно сколько (на этапе разработки) чего-то хранить.
А вообще - почитайте http://www.delphikingdom.com/helloworld/runtime_comp.htm
Ибо полезно оно.
Ega23 (2004-11-29 14:02:00) [3]А, ну тогда давай кнопке имя. Или Tag свойство используй, по integer'у быстрее искать будет, чем по String
Брат (2004-11-29 13:55:00) [4]
> Ega23 © (29.11.04 13:48) [4]
> А что тебе мешает в var ещё и btn:TButton добавить??? Это
> же всего лишь указатель?
дело в том что я незнаю сколько у меня будет таких компонентов - может быть один а может быть и сто
не хочется объявлять сто переменных TButton :(
Брат (2004-11-29 13:50:00) [5]Понял спасибо :)
Ega23 (2004-11-29 13:48:00) [6]А что тебе мешает в var ещё и btn:TButton добавить??? Это же всего лишь указатель?
begin...end (2004-11-29 13:42:00) [7]> [2] Брат (29.11.04 13:35)
> а как к этой кнопке в дальнейшем обратиться по имени?
Найти её c помощью aForm.FindComponent, только при создании нужно указать ей имя.
Брат (2004-11-29 13:35:00) [8]
> With TButton.Create(aForm) do
> begin
> Parent:=aForm;
> Cancel:=True;
> Height:=25;
> Width:=100;
> Font.Size:=10;
> Top:=aForm.ClientHeight-30;
> Left:=aForm.ClientWidth-110;
> Caption:='Закрыть';
> ModalResult:=mrCancel;
> end;
а как к этой кнопке в дальнейшем обратиться по имени?
Ega23 (2004-11-29 12:46:00) [9]
function ShowMessagesString(const aMessage:String; aCaption:String='';
FormWidth:Integer=750; FormHeight:Integer=500):Boolean;
var
aForm:TForm;
begin
Result:=False;
try
Application.CreateForm(TForm, aForm);
try
With aForm do
begin
Caption:=aCaption;
BorderStyle:=bsDialog;
Height:=FormHeight;
Width:=FormWidth;
Position:=poScreenCenter;
end;
With TMemo.Create(aForm) do
begin
Parent:=aForm;
Font.Name:='Courier New';
Name:='memSQLLogMonitor';
Align:=alTop;
ScrollBars:=ssBoth;
WantReturns:=False;
Height:=aForm.ClientHeight-40;
Clear;
Lines.Text:=aMessage;
end;
With TButton.Create(aForm) do
begin
Parent:=aForm;
Cancel:=True;
Height:=25;
Width:=100;
Font.Size:=10;
Top:=aForm.ClientHeight-30;
Left:=aForm.ClientWidth-110;
Caption:='Закрыть';
ModalResult:=mrCancel;
end;
aForm.ShowModal;
finally
aForm.Free;
end;
except on E:Exception do
raise Exception.Create('ShowMessagesString '+E.Message);
end;
end;