Сделаем следующие объявления
Code: |
implementation const n = 4; // Сколько нам нужно изображений uses Unit2; var Fa: array[1..n] of TImageForm; |
Теперь нам нужно создать массив Fa, разместить его на форме и заполнить его изображениями. Всё это делается вручную - фокус с Tag тут уже не пройдёт. Делать это лучше не во время создания формы, а например во время активации.
Code: |
procedure TFormMain.FormActivate(Sender: TObject); var i: byte; begin for i := 1 to n do begin Fa[i] := TImageForm.Create(Self); // Создание формы Fa[i].Parent := Self; //Без этой строки наши формы будут бегать по всему экрану Fa[i].Visible := True; //Вывод формы на экран Fa[i].Image1.Picture.LoadFromFile(IntToStr(i) + '.bmp'); // Загрузка картинки Fa[i].Top := i * 50 //Выбор места расположения (здесь ставятся ваши значения) end; end; |
Другой вариант - разместить на форме Timer с незначительным интервалом и разместить вышеприведённый код в процедуре OnTimer, указав в конце Timer1.Enabled:=false;
Последний штрих - установите "Отображать содержимое окна при его перетаскивании" с помощью следующей процедуры
B: Bool; //Объявите B где-нибудь после implementation
В FormCreate включите следующее
B := True;
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, 0, @B, SPIF_SENDCHANGE)
// Не проверял
Ура! В созданная таким образом программе перемещаемые изображения не мерцают.
Однако объём памяти, занимаемый ею во время работы весьма велик. Программа состоящая из вышеприведённых процедур занимает на диске около 400 кб, а в ОП - порядка 2 мб. Попробую поискать менее ресурсоёмкое решение.
Ну вот и всё. Надеюсь, вам понравится. Обругать меня вы можете по адресу Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!