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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2011, 22:12   #21
Tuman777
Пользователь
 
Регистрация: 10.07.2011
Сообщений: 37
По умолчанию

я разобрался, просто забыл поставить end.
даже не могу понять работает ли твой код, сейчас попробовал запустить на форме пропали все имиджи
Tuman777 вне форума Ответить с цитированием
Старый 24.08.2011, 22:15   #22
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

ты б сначала разобрался с кодом, а не тупо копировал его к себе.
А код работает 100%, проверил не однократно перед тем как выложить
fate вне форума Ответить с цитированием
Старый 24.08.2011, 22:17   #23
Tuman777
Пользователь
 
Регистрация: 10.07.2011
Сообщений: 37
По умолчанию

fate

спасибо тебе большое, я так и сделаю. поспешишь людей насмешишь.
хотя не откажусь от помощи
Tuman777 вне форума Ответить с цитированием
Старый 24.08.2011, 22:22   #24
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

ну если что-то в коде будет не понятно, пиши
fate вне форума Ответить с цитированием
Старый 24.08.2011, 22:26   #25
Tuman777
Пользователь
 
Регистрация: 10.07.2011
Сообщений: 37
По умолчанию

fate

если тебя не затруднит, дай краткое описание. разобраться в этом коде у меня займет не мало времени. а время поджимает.
если даже затруднит все равно спасибо
Tuman777 вне форума Ответить с цитированием
Старый 24.08.2011, 23:20   #26
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:byte; p:word;
begin
for i:=0 to ComponentCount-1 do //перебираем все компоненты на форме
if Components[i] is TImage then begin //если компонент является TImage 
repeat  
p:=random(length(pozition));  //присваиваем переменой p рандомное значение от 0 до длинны массива
until (pozition[p].X<>0)and(pozition[p].y<>0);  //если значение по x и по у не равно нулю идем дальше если равно 0 то продолжаем цикл до того пока не наступит "благоприятное условие"
(Components[i] as TImage).Left:=pozition[p].X; // присваеваем новое значение
(Components[i] as TImage).top:=pozition[p].y;
ZeroMemory(@pozition[p],sizeof(pozition[p])); // обнуляем элемент массива что бы не получилось что выбирается одно и то же значение
end;

end;

//тут я разукрашую 6 имеджей на форме в разные цвета
procedure TForm1.Button2Click(Sender: TObject);
const cvet:array[0..5]of Tcolor=(clBlue,clWhite,clGreen,clYellow,clred,cllime);
var i:byte;
begin
for i:=0 to ComponentCount-1 do  //перебираем все компоненты на форме
if Components[i] is TImage then begin  //если компонент является TImage 
  pozition[i].X:=(Components[i] as TImage).Left; //тут я заполняю массив pozition первичными данными
  pozition[i].y:=(Components[i] as TImage).top;

//это тебе не нужно, здесь здесь я разукрашиваю Image для наглядности
  (Components[i] as TImage).Canvas.Brush.Color:=cvet[i];
  (Components[i] as TImage).Canvas.Rectangle(0,0,105,105);
end;

end;
fate вне форума Ответить с цитированием
Старый 24.08.2011, 23:39   #27
Tuman777
Пользователь
 
Регистрация: 10.07.2011
Сообщений: 37
По умолчанию

скрин 11 просто форма
скрин 12 после запуска.
куда все делось

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i:byte; p:word;
pozition:array[0..5]of TPoint;
begin
for i:=0 to ComponentCount-1 do
if Components[i] is TImage then begin
repeat
p:=random(length(pozition));
until (pozition[p].X<>0)and(pozition[p].y<>0);
(Components[i] as TImage).Left:=pozition[p].X;
(Components[i] as TImage).top:=pozition[p].y;
ZeroMemory(@pozition[p],sizeof(pozition[p]));
end;
end;


procedure TForm1.Button2Click(Sender: TObject);
const cvet:array[0..5]of Tcolor=(clBlue,clWhite,clGreen,clYellow,clred,cllime);
var i:byte;
pozition:array[0..5]of TPoint;
begin
for i:=0 to ComponentCount-1 do
if Components[i] is TImage then begin
  pozition[i].X:=(Components[i] as TImage).Left;
  pozition[i].y:=(Components[i] as TImage).top;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;
end.
что я не так сделал???????
Tuman777 вне форума Ответить с цитированием
Старый 24.08.2011, 23:40   #28
Tuman777
Пользователь
 
Регистрация: 10.07.2011
Сообщений: 37
По умолчанию

вот скрины
Изображения
Тип файла: jpg 11.jpg (293.8 Кб, 147 просмотров)
Тип файла: jpg 12.jpg (26.8 Кб, 146 просмотров)
Tuman777 вне форума Ответить с цитированием
Старый 24.08.2011, 23:43   #29
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Цитата:
куда все делось
а что должно быть? у тебя ж все имедж пустые, я думал у тебя там картинки какие-то планируются быть

Последний раз редактировалось fate; 24.08.2011 в 23:45.
fate вне форума Ответить с цитированием
Старый 24.08.2011, 23:45   #30
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

1. если у тебя 5 имеджей на форме, уменьши размер массива pozition.
2. pozition должен быть объявлен глобально а не в каждой процедуре
fate вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
random/randomize Ya_Aston Помощь студентам 8 17.12.2010 19:49
Delphi Randomize tanek Помощь студентам 5 31.05.2010 20:52
Randomize )Игнат( Паскаль, Turbo Pascal, PascalABC.NET 13 03.02.2009 16:51
Функция Randomize MaXXX Общие вопросы Delphi 2 23.09.2008 11:42