Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамическое создание объекта [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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо