Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1084979824
Nous Mellon
2004-05-19 19:17
2004.06.06
Регистрация


3-1084795780
Gennadiy
2004-05-17 16:09
2004.06.06
Проблема с хранимое процедурой!!!


1-1085291576
Cucumber
2004-05-23 09:52
2004.06.06
Как измерить маленький отрезок времени?


4-1083766292
Maximys
2004-05-05 18:11
2004.06.06
Поиск в реестре


3-1084509303
vlgrig1961
2004-05-14 08:35
2004.06.06
Не понятно почему из TMemo в function появляются пустые строки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский