Форум: "Основная";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Внизсоздание динамического массива объектов TImage Найти похожие ветки
← →
Nikoss (2004-05-16 14:00) [0]Как объявить динамический массив объектов TImage, после чего загрузить в них картинки? При объявлениии такого массива:
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
edmas: array of TImage;
implementation
появляется ошибка:
[Error] Unit1.pas(22): Undeclared identifier: "TImage"
Таким способом у меня получалось создать массив объектов TLabel и TEdit, а TImage не удается. В чем тут дело?
Мне удалось объявить массив вот такой:edmas: array of TImageList;
, но видимо, это не то что мне нужно, так как подгрузить картинки я не смог (отсутствует свойство Picture).
← →
begin...end © (2004-05-16 14:12) [1]Класс TImage описан в модуле ExtCtrls.
← →
GuAV © (2004-05-16 14:17) [2]
> но видимо, это не то что мне нужно
А что, собственно нужно?
← →
Мыш © (2004-05-16 14:52) [3]Если тебе нужен какой-то класс, описанный в определенном модуле, этот модуль нужно влючить в uses
← →
GuAV © (2004-05-16 15:10) [4]
> А что, собственно нужно?
Я к тому, что если надо просто загрузить куда-то картики, то это TImageList, а если array, то of TPicture. TImage - визуальный компонент
← →
Nikoss (2004-05-16 18:16) [5]
> А что, собственно нужно?
нужно следующее, на форму в зависимости от задачи будут выводиться разное кол-во объектов TImage и в них загружаться картинки формата gif (для того, чтобы корректно понимал объект TImage формат gif я установил компонент TGifImage v2.2).
Посоветуйте, как мне лучше это сделать?
← →
GuAV © (2004-05-16 18:53) [6]
>
> нужно следующее...
если один раз за запуск - массив не нужен.
если динамически добавлять/удалять - есть TComponentList - несколько проще будет
← →
Nikoss (2004-05-16 19:55) [7]а нельзя ли сделать вот так:
var
Form1: TForm1;
immas: array of TImage;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
SetLength(immas,5);
for i:= 0 to 4 do begin
Form1.Create(immas[i]);
immas[i].Picture.LoadFromFile("c:\"+IntToStr(i)+".bmp");
end;
end;
end.
По-моему это верное решение вот тоьлко при нажатие кнопки появляется ошибка:
Project xxx.exe raised exception class EComponentError with message "A component named Button1 already exists". Process stopped...
Как я понимаю, мне сообщают, что компонент кнопки уже существует, ноя же создаю компонент TImage, в чем тут дело?
← →
GuAV © (2004-05-17 00:02) [8]
> Form1.Create(immas[i]);
Чё за бред !!!
← →
European (2004-05-17 00:17) [9]
> for i:= 0 to 4 do begin
> Form1.Create(immas[i]);
> immas[i].Picture.LoadFromFile("c:\"+IntToStr(i)+".bmp");
> end;
← →
European (2004-05-17 00:18) [10]
> for i:= 0 to 4 do begin
> Form1.Create(immas[i]);
> immas[i].Picture.LoadFromFile("c:\"+IntToStr(i)+".bmp");
> end;
> По-моему это верное решение
После этого не многие захотят вам отвечать
← →
European (2004-05-17 00:19) [11]Во-первых, массив не нужен.
← →
European (2004-05-17 00:29) [12]Во-вторых, создавайте TImage динамически.
Пример из интернета:
Image:=TImage.Create(self);
Image.Parent:=Form1;
Image.Picture.LoadFromFile("c:\windows\Волны.bmp");
В-третьих, если число Image неизвестно, то можно найти нужный при помощи FindComponent. Пример есть в хелпе, нежно только поискать.
Желаю удачи!
← →
GuAV © (2004-05-17 00:48) [13]
> Во-первых, массив не нужен.
А может ему надо уничтожать/добавлять, не трогая форму
или другие действия делать с ними, через массив быстрее к ним доступ, чем FindComponent или Controls[i]
← →
Nikoss (2004-05-17 20:26) [14]Спасибо за помощь.
Как вы посоветовали я создал массив, но беда в том, что не отображаются картинки вгруженные в массив. Какое свойство нужно активировать, чтобы отображались бы картинки?
← →
GuAV © (2004-05-17 22:34) [15]
> Как вы посоветовали
Если именно так:
> Image:=TImage.Create(self);
> Image.Parent:=Form1;
> Image.Picture.LoadFromFile("c:\windows\Волны.bmp");
, то должны быть видны.
если через массив, то соответственно Image[i] в начале кажндой строки.
← →
Palladin © (2004-05-17 22:39) [16]А координаты кто будет назначать, или картинки обладают интеллектом у тебя?
И вообще, рекомендую поизучать литературу, да попроще задачи порешать. Кто знает сколько там у тебя нюансов еще...
← →
European (2004-05-18 01:04) [17]to Palladin © (17.05.04 22:39) [16]
Например, разобраться что за зверь
Form1.Create(immas[i]);
← →
Nikoss (2004-05-19 20:34) [18]Подскажите, как мне отследить клик по динамически созданному объекту? Например, у меня 5 динамически созданных объектов Image[i], при клике мыши на любом из них, в Lable1 должно отобразиться порядковое число того объекта, на который был сделан щелчек. Подскажите, как должна быть офомлена такая процедура?
← →
begin...end © (2004-05-19 21:05) [19]Процедура должна быть оформлена обычным образом.
Её нужно назначить в качестве обработчика.
Например, так:for I := LowIndex to HighIndex do
Image[I].OnClick := MyProc;
← →
Nikoss (2004-05-20 00:00) [20]
> for I := LowIndex to HighIndex do
> Image[I].OnClick := MyProc;
При это компилятор выдает ошибку:
[Error] Unit1.pas(39): Incompatible types: "method pointer and regular procedure"
Процедуру MyProc создал и объявил, в чем тут ошибка?
← →
Gero © (2004-05-20 00:12) [21]
> Nikoss (20.05.04 00:00)
procedure TForm1.MyProc(Sender : TObject);
begin
// Вот она
end;
← →
GuAV © (2004-05-20 09:16) [22]Delphi Help -> Index -> method pointers
← →
nikoss (2004-05-20 16:59) [23]А как мне узнать, номер объекта, по которому был сделан щелчек миши? Допустим, у меня 5 объектов Timage и мне необходимо выполнить разный программный код в зависимости от номера объекта. Как мне узнать этот номер?
← →
NAlexey © (2004-05-20 17:06) [24]>щелчек миши
Имена пишутся с большой буквы.
← →
Keyboard (2004-05-20 17:29) [25]Спасение студентов - дело рук самих студентов...
← →
Nikoss (2004-05-20 19:05) [26]
> NAlexey
> Keyboard
Вы, наверное, себя чувствуете очень умными, если это так то ответьте по существу, а не разводите базар, а если по существу написать нечего, то не стоит умничать.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.034 c