2012-05-07 3 views
-4

Я использую Delphi и я создал массив из десяти элементов типа TImage капельки этого названия и структура:Я создал массив TImage, но они не видны

Form3.images[1..max] of TImage. 

Я пытались инициализировать его в таким образом:

for x := 1 to max do 
begin 
    images[x] := TImage.Create(Form3); 
    images[x].AutoSize := True; 
    images[x].Name := 'image' + IntToStr(x); 
    images[x].Visible := true; 
    images[x].Parent := Form3; 
end; 

После этого я попытался поместить содержимое другой переменной (так называемый Form3.a1: TImage) для каждого элемента массива.

Я пытался сделать это с помощью этих инструкций:

for i := 1 to max do 
begin 
    Form3.Images[i]:=Form3.a1;    // (Form3.a1: TImage) <- this is visible 
end; 

(я не знаю, если в соответствии с инструкциями, прежде чем, это правильно сделать) После этого я изменил позиции изображений массива:

//Form3.square:TShape 

x := Form3.square.Left; 
y := Form3.square.Top; 
Form3.Images[1].Top := y + 70; 
Form3.Images[1].Left := x + 60; 
... 
Form3.Images[1].Top := y + 10; 
Form3.Images[1].Left := x + 50; 

Я установил разные позиции для каждого изображения массива, но когда я запускаю программу, изображения массива не видны. Я также попытался установить Form3.square.visible = false, но ничего не изменилось.

Это то, что я хочу:

  • имеет такое же содержание между переменными a1 и переменным массивом images, меняя только позиции
  • изображений
  • сделать массив видимым (я попытался images[x].Visible := true;, но он не работает).

, пожалуйста, мне нужна помощь, я могу предоставить другие сведения. Спасибо.

+0

Что такое 'Form3.a1'? –

+0

И что такое 'Form3.Lista', если не список изображений? – TLama

ответ

3

Вы забыли установить положение управления; Left и Top. Это желательно сделать, позвонив по номеру SetBounds. Кроме того, размеры не указаны, но об этом заботится свойство AutoSize (ему не нужно было становиться видимым, хотя).

+0

О, спасибо! И извините, потому что я забыл сказать, что я поставил позиции! Позиции изображений одинаковы для другого объекта (это форма). Я попытался установить shape.visible = false, чтобы увидеть, были ли изображения под ним, но я не мог видеть изображения ... pls heeeeeelp :( – Black8AC

1

При условии, что вы установили положение изображений в массиве images (как вы заявляете в комментарии по te other answer), тогда первый код должен работать нормально.

Проверьте следующее, хотя:

  • ли Width и Height свойства ImageList Form3.Lista множества? Обратите внимание, что при их изменении, ImageList очищается.
  • Убедитесь, что вы смотрите то же самое TForm3 экземпляр, где переменная указывает на Form3. (Вы не должны использовать эту глобальную переменную формы в любом случае!)

Теперь о второй части кода, в котором вы скопировать изображения от одного к другому:

  • Is a1 (локальным) объявленная переменная, как вы написали наполовину вопрос? Затем Form3.a1 (который является частным полем TForm3) и a1 (переменная) не совпадают!
  • Обратите внимание, что вы копируете из Form3.a1 в Images[i]. Разве это не может быть наоборот?
  • Если это действительно то, что вы хотите: Form3.a1 случайно?

Есть еще 2 варианта я могу думать, но и приведет к исключению, поэтому я полагаю, это не так:

  • ImageList Form3.Lista не владеет или не хватает изображений,
  • Изображение Form3.a1 не содержит растрового изображения, но gif, jpeg или другого графического типа.
+0

Хорошо, спасибо. – Black8AC

+0

но есть некоторые проблемы: я не сделал используйте ImageList, переменная только одна, и это Form3.a1. У нее есть изображение внутри (растровое изображение, как я уже сказал). Но должен ли я создавать ImageList, если у меня уже есть массив изображений? – Black8AC

+1

Я принял 'Form3 .Lista' является 'TImageList', потому что вы вызываете' GetBitmap' на нем. Какой тип 'Form3.Lista' тогда? – NGLN

Смежные вопросы