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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2010, 08:48   #1
Zibiv
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 64
Плохо label рандомная смена

Всем здравствуйте! Ребята подскажите пожалуйста, как сделать, что бы на форме три label, по нажатию кнопки менялись между собой рандомно, то есть например вместо первого, третий, нажал кнопку, вместо третьего второй, и каждый раз поразному
Заранее благодарен!
Очень срочно нужно, просто есть задумка одна, а как сделать не знаю))
Zibiv вне форума Ответить с цитированием
Старый 27.05.2010, 08:59   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Что значит "менялись"? Обмен их Caption между собой??? Или все становились невидимы, кроме одного? Или все становились недоступны, кроме одного???
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 27.05.2010, 09:02   #3
Zibiv
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 64
По умолчанию

Caption должны остаться так же как и были каждый у своего.
Меняться между собой физически, то есть на месте первого должна оказаться первая. Занять ее место и т.д. И все они должны быть видимые и активные.
Zibiv вне форума Ответить с цитированием
Старый 27.05.2010, 10:14   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Ну дак и переставляйте, каждый следующий lable на координаты, на которых находился предыдущий.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.05.2010, 10:25   #5
Zibiv
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 64
По умолчанию

Ну это-то понятно)) вопрос в том, как сделать это рандомно))
Zibiv вне форума Ответить с цитированием
Старый 27.05.2010, 10:33   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Можно организовать массив свойств меток (Top,Left), а индексы выбирать рандомно (Random(3))...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 27.05.2010, 10:44   #7
Zibiv
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 64
По умолчанию

Это идея, вот про массив свойств меток поподробней, если можно))
Zibiv вне форума Ответить с цитированием
Старый 27.05.2010, 10:45   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

например, так:
Код:
        private void button1_Click(object sender, EventArgs e)
        {
            Int32[] CoordX = new Int32[3];
            CoordX[0] = label1.Left;
            CoordX[1] = label2.Left;
            CoordX[2] = label3.Left;
            Int32 TempCoordX;

            int k2 = 0;
            Random rand = new Random();

            for (int i = 0; i < 10; i++)
            {
                for (int k1 = 0; k1 < 3; k1++)
                {
                    while (true)
                    {
                        k2 = rand.Next(3);
                        if (k1 != k2) { break; }
                    }
                TempCoordX = CoordX[k1];
                CoordX[k1] = CoordX[k2];
                CoordX[k2] = TempCoordX;
                }     
            }
            label1.Left = CoordX[0];
            label2.Left = CoordX[1];
            label3.Left = CoordX[2];
        }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.05.2010, 10:55   #9
Zibiv
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 64
По умолчанию

Ууу спасибо) Но я забыл написать, что делаю на Delphi)) Так что я был бы очень рад если код для Delphi был)))

Последний раз редактировалось Zibiv; 27.05.2010 в 11:05.
Zibiv вне форума Ответить с цитированием
Старый 27.05.2010, 11:49   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да не вопрос.
вот, даже улучшенный вариант (повторы не допускаются)
Код:
procedure TForm1.Button1Click(Sender: TObject);
var CoordX : array[0..2] of Integer;
  TempCoordX : Integer;
  i, k2, k1 : integer;
begin
   CoordX[0] := label1.Left;
   CoordX[1] := label2.Left;
   CoordX[2] := label3.Left;

   Randomize;

   repeat
     for i:=1 to 10 do
       for k1:=0 to 2 do begin
         repeat
           k2 := random(3);
         until k1<>k2;
         TempCoordX := CoordX[k1];
         CoordX[k1] := CoordX[k2];
         CoordX[k2] := TempCoordX;
       end;
   until (label1.Left <> CoordX[0]) or
           (label2.Left <> CoordX[1]) or (label3.Left <> CoordX[2]);
   label1.Left := CoordX[0];
   label2.Left := CoordX[1];
   label3.Left := CoordX[2];

end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рандомная смена картинок в хедере soonner JavaScript, Ajax 7 14.04.2010 20:19
При расположении Label на компонентах, место под Label, не реагирует на событие onClick. NavigatorNeba Компоненты Delphi 3 15.11.2008 19:56
Смена форм... AndrYxo Общие вопросы Delphi 6 12.10.2008 17:01
Смена заголовка Terran Общие вопросы Delphi 3 13.12.2007 01:37
Вопрос по label. Как сделать так чтобы label была прозрачной. Lonix Компоненты Delphi 2 01.04.2007 06:23