Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2012, 20:59   #1
Putin-mode
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 82
По умолчанию Хаотичное расположение картинок

Добрый вечер!

Пишу небольшую программу для ребенка для изучения алфавита, доработать еще придется но работает, пока не начал доделывать остатки решил включить перемешивание букв, а вернее перемешивание Timage на самой форме при создании формы, наведите пожалуйста на нужный путь как перемешивать картинки местами, можно и по одной строке, но лучше чтоб все разом перемещались.

Спасибо!

Исходник прикрепил.
Вложения
Тип файла: rar Kids.rar (1,001.4 Кб, 6 просмотров)
Putin-mode вне форума Ответить с цитированием
Старый 01.09.2012, 22:36   #2
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Доброго времени суток! Попробуйте использовать 2 массива в 1 массиве использовать индекс имайджа и его положение, а во втором положение сравнивать с координатами на форме, имайджи "запихайте" в переменную TList и обращайтесь к ним тем индексами что в 1 массиве
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 01.09.2012, 22:49   #3
Putin-mode
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 82
По умолчанию

ох :-) Спасибо! Но чувствую без маленького примерчика мне с индексами и сравнением координат не разобраться, для меня это еще сложновато. А с помощью имеджлист это возможно сделать?
Putin-mode вне форума Ответить с цитированием
Старый 02.09.2012, 01:05   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Putin-mode, у каждого компонента есть координаты на форме. Они в свойстве Left и Top.

В модуле System.Contnrs есть класс TComponentList(наследник TList и TObjectList), там храните свои компоненты, потом
от 1-го до последнего компонента списка, читайте свойства Lift и Top в переменную TPoint и создавайте из этих переменных массив, затем мешайте его и от 1-го до последнего заносите измененное координаты к компоненту, тот изменить свое положение относительно формы.

Хотя конечно в роли контейнера выступает форма, и если там только 10 эл-ов, и это кол-во само не меняется то можно и без списков т.к. в роли хранилища будет выступать ваша форма.

Код:
procedure SameProc;
var
  MassStorage:array of TPoint;
  i,troll:Integer;
  
begin
  with Form do
begin
  for I:=0 to ComponentsCount -1 do
  begin
    if (Components[i] is TImage) then
    begin
      SetLength(MassStorage,Length(MassStorage)+1); 
      MassStorage[Length(MassStorage)].X:=(Components[i] as TImage).Left;
      MassStorage[Length(MassStorage)].Y:=(Components[i] as TImage).Top;
    end;
  end;
  
  {Теперь вы работаете с массивом MassStorage где  мешаете элементы, меняете их расположение}

//Теперь надо вернуть все на место
  for I:=0 to ComponentsCount -1 do
  begin
    if (Components[i] is TImage) then
    begin
      (Components[i] as TImage).Left:=MassStorage[troll].X;
      (Components[i] as TImage).Top:=MassStorage[troll].Y;
      Troll:=troll+1; 
      If troll > Length(MassStorage) then raise Exception.CreateFmt('Ошибка, неверный индекс массива');
    end;
  end;

end;
end;
По-поводу анимации, тут уж не знаю.
Человек_Борща вне форума Ответить с цитированием
Старый 02.09.2012, 10:52   #5
Putin-mode
Пользователь
 
Регистрация: 04.06.2010
Сообщений: 82
По умолчанию

Спасибо всем! Щас пока пробую что то такое

Код:
var
n1,n2 : integer;
begin
 Randomize;
 n1 := Random(4);
 Randomize;
 n2 := Random(4);
 Image1.top:=0;

 Image2.top:=0;
  case n1 of

      1 : Image1.left:= 100;
      2 : Image1.left:= 200;
       3 : Image1.left:= 150;
     4 : Image1.left:= 250;
   end;

   case n2 of

      1 : Image2.left:= 300;
      2 : Image2.left:= 150;
       3 : Image2.left:= 100;
     4 : Image2.left:= 70;
   end;
 end;
если не получиться то буду стараться вникать в код Человек_Борща
Putin-mode вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расположение обьекта jetei Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 15.12.2011 20:21
Расположение файла Афанасий[vedma] Общие вопросы Delphi 5 06.08.2011 19:10
Расположение формы KatCH Общие вопросы Delphi 5 16.02.2010 17:30