Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

создание объектов

16K
24 сентября 2006 года
Black_Shem
14 / / 08.08.2006
как создать массив объектов например:
image:array[1..10]:Timage;
а дальше как их вызывать,показывать на экране?
8
24 сентября 2006 года
mfender
3.5K / / 15.06.2005
А лучше для этого использовать всё-таки то, что есть - TObjectList, а не изобретать велосипед.
309
24 сентября 2006 года
el scorpio
1.1K / / 19.09.2006
Конкретно в данном случае - TImageList.
Ксати - его можно разместить прямо на форме, и не мучиться с созданием/удалением
16K
25 сентября 2006 года
Black_Shem
14 / / 08.08.2006
el scorpio это не конкретный случай.

мне именно нужно что бы они объекты создавались программно!

вот у меня была идея.по поводу создания одного объекта.
comb:Tcombobox;
....
comb:=Tcombobox.create;
// ну тут ещё задаём параметры
....

только вот что то не работает.код то правельный но на экране отобразить не могу.
подскажите что нибудь
309
26 сентября 2006 года
el scorpio
1.1K / / 19.09.2006
Black_Shem
Сделай ImageList полем своего объекта, и создавай в нём программно сколько угодно рисунков.
Не забудь, что если требуется создать визуальный компонент, то он должен быть производным от соответствующего компонента (TWinControl), и в качестве владельца иметь форму.
Сам ImageList также должен иметь владельцем этот объект
286
26 сентября 2006 года
misha_turist
572 / / 28.11.2005
[QUOTE=Black_Shem]el scorpio это не конкретный случай.

мне именно нужно что бы они объекты создавались программно!

вот у меня была идея.по поводу создания одного объекта.
comb:Tcombobox;
....
comb.create;
// ну тут ещё задаём параметры
....

только вот что то не работает.код то правельный но на экране отобразить не могу.
подскажите что нибудь[/QUOTE]
Если на то пошло, то не comb.create;, а comb:=Tcombobox.create(<экземпляр класса формы>);.
16K
26 сентября 2006 года
Black_Shem
14 / / 08.08.2006
господа вы что издеваетесь?я вас нормально спросил.
el scorpioда да не нужно мне рисунки создавать!
misha_turist ну да просто ошибочка вышла.
ну и как сделать кто нибудь может внятно сказать?
303
27 сентября 2006 года
makbeth
1.0K / / 25.11.2004
Используя TImage:
Код:
type
    TForm1 = class (TForm)
    ...
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
    private
        ImageList: TObjectList; // по совету mfender
        procedure CreateImages;
        // Это св-во для удобства доступа к TImage
        property Images[Index: Integer]: TImage read GetImage;
        function GetImage(Index: Integer): TImage; // inline; // Если работаешь в BDS 2006
    ...
    public
        // Пример, как работать...
        procedure ShowImage(Index: Integer; DoShow: boolean);
    end;

...
procedure TForm1.FormCreate(Sender: TObject);
begin
    // Создаем список
    ImageList:=TObjectList.Create(false);
    // OwnsObjects = false, т.к. память TImage корректно освободит сама форма
    CreateImages;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
    // Освобождаем память, занятую списком
    ImageList.Free;
end;

procedure TForm1.CreateImages;
var i: Integer;
     newImage: TImage;
begin
    // Создаем 10 TImage...
    for i:=0 to 9 do
    begin
        newImage:=TImage.Create(Self);
        with newImage do
        begin
            Parent:=Self;
            Visible:=false; // По умолчанию - невидимый
            // ... здесь можно настроить др. св-ва - позиция, размеры,
            // собственно загрузить сам рисунок в компонент
        end;
        ImageList.Add(newImage);
    end;
end;

function TForm1.GetImage(Index: Integer): TImage;
begin
    Result:=ImageList[Index] as TImage;
end;

procedure TForm1.ShowImage(Index: Integer; DoShow: boolean);
begin
    Images[Index].Visible:=DoShow;
end;

Это то?
713
27 сентября 2006 года
Ap0k
360 / / 13.03.2006
Я плачу... :)
Вопрос задан нормально, а ответы...
 
Код:
var
images: array[1..100] of TImage;
i : integer;
begin
  for i:= 1 to 100 do
    images := TImage.Create(); {не знаю какой там точно конструктор у TImage}
end
286
27 сентября 2006 года
misha_turist
572 / / 28.11.2005
Только надо грамотное удаление предусматреть, на подобее
 
Код:
for i:=Low(imag) to High(image) do
  if Assigned(image) then images.free;


А для отображения
 
Код:
images[n].parent:=<эгземпляр объекта на котором размещаеш>;
  images[n].left:=...;
  images[n].top:=...;
  ........................
303
28 сентября 2006 года
makbeth
1.0K / / 25.11.2004
Ap0k, а чем мой ответ тебе не понравился, кроме того, что там используется не массив, а список объектов???
16K
01 октября 2006 года
Black_Shem
14 / / 08.08.2006
вот так бы сразу теперь всё понятно.
286
01 октября 2006 года
misha_turist
572 / / 28.11.2005
[QUOTE=Black_Shem]вот так бы сразу теперь всё понятно.[/QUOTE]
Хоть бы спасибо сказал..))))
16K
02 октября 2006 года
Black_Shem
14 / / 08.08.2006
Всем спасибо.:) хотя мне уже до этого друие люди посказали.но всё равно спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог