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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2009, 22:54   #1
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию Трабла с Radiogroup

Опять интересуюсь у вас, знающие форумчане)
у меня есть Radiogroup с 4мя Итемами. Так же имеется 4 линии и ТрекБар. Проверяется условие, на Checked одного из 4х Итемов, и в зависимости от этого двигается одна из линий.
но вот проблема. пусть я выбрал первый итем. подвинул одну линию(двигаю трекбаром). потом выбираю 2 Итем и тут координаты 1й линии(которые с трек бара считываются) перекидываются сразу на 2ю линию, а 1я возращается на ноль. А мне нужно чтобы она осталась там же.
Проблема в том, что выполняется только 1 условие.
как мне обойти эту проблему?
Seran4ek вне форума Ответить с цитированием
Старый 28.11.2009, 23:05   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

сделайте массив типа record:
Код:
type mas = record
 x,y: integer;
 value: integer; // положение тракбара
 // ну и другие параметры каждой линии
end;

var mas1: array[0..3] of mas;
заполните массивчик, постройте что нужно, по событию checked радиогруппа выбирайте какую запись меняете и выставляйте перед этим положение trackbar.position:= mas1[radiogroup.itemindex].value, а по событию trackbar.onchange меняйте соответствующую запись и ее параметры, потом прорисовка... все должно быть ясно из этого
зы: вашу прошлую тему с этой проблемой видел
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 28.11.2009, 23:40   #3
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

видите ли, у меня сперва линии находятся на определенных координатах
Код:
 DrawLine(-5-L/10,1+TB_Pos/10,-1-TB_Pos/10,5+L/10,1+TB_Pos/10,-1-TB_Pos/10);
  DrawLine(-5-L/10,-1-TB_Pos/10,-1-TB_Pos/10,5+L/10,-1-TB_Pos/10,-1-TB_Pos/10);
  DrawLine(-5-L/10,1+TB_Pos/10,1+TB_Pos/10,5+L/10,1+TB_Pos/10,1+TB_Pos/10);
  DrawLine(-5-L/10,-1-TB_Pos/10,1+TB_Pos/10,5+L/10,-1-TB_Pos/10,1+TB_Pos/10);
L=это для увеличения уменьшения длинны (по оси ИКС), а вот TB_Pos это какраз так надбавка к Y и Z которая эти линии раздвигает.
при проверке РадиоГрупп я использовал массив P[0..3] где P[i] это надбавка для iй линии.

значит мне в record нужно хранить только одно значение?(надбавка)
Seran4ek вне форума Ответить с цитированием
Старый 29.11.2009, 00:00   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
-5-L/10,1+TB_Pos/10,-1-TB_Pos/10,5+L/10,1+TB_Pos/10,-1-TB_Pos/10
не вижу, чтоб тут вы работали с каждой линией отдельно... храните фактические координаты и смещение соответствующей линии в соответствующей записи, тогда не будет вот этой мешанины:
Код:
DrawLine(-5-L/10,1+TB_Pos/10,-1-TB_Pos/10,5+L/10,1+TB_Pos/10,-1-TB_Pos/10);
  DrawLine(-5-L/10,-1-TB_Pos/10,-1-TB_Pos/10,5+L/10,-1-TB_Pos/10,-1-TB_Pos/10);
  DrawLine(-5-L/10,1+TB_Pos/10,1+TB_Pos/10,5+L/10,1+TB_Pos/10,1+TB_Pos/10);
  DrawLine(-5-L/10,-1-TB_Pos/10,1+TB_Pos/10,5+L/10,-1-TB_Pos/10,1+TB_Pos/10);
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.11.2009, 00:06   #5
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

вот код полностью)
Код:
if form1.CheckBox1.Checked=true then //если стоит 
//галочка"двигать  все линии сразу"
  begin
  DrawLine(-5-L/10,1+TB_Pos/10,-1-TB_Pos/10,5+L/10,1+TB_Pos/10,-1-TB_Pos/10);
  DrawLine(-5-L/10,-1-TB_Pos/10,-1-TB_Pos/10,5+L/10,-1-TB_Pos/10,-1-TB_Pos/10);
  DrawLine(-5-L/10,1+TB_Pos/10,1+TB_Pos/10,5+L/10,1+TB_Pos/10,1+TB_Pos/10);
  DrawLine(-5-L/10,-1-TB_Pos/10,1+TB_Pos/10,5+L/10,-1-TB_Pos/10,1+TB_Pos/10);

  form1.ProvodRG.Enabled:=false;

  end

  else
  begin
  form1.ProvodRG.Enabled:=true;
  if form1.ProvodRG.ItemIndex=0 then
    begin
    P[0]:=TB_Pos;
    DrawLine(-5,1+P[0]/10,-1-P[0]/10,5,1+P[0]/10,-1-P[0]/10);
    DrawLine(-5,-1-P[1]/10,-1-P[1]/10,5,-1-P[1]/10,-1-P[1]/10);
    DrawLine(-5,1+P[2]/10,1+P[2]/10,5,1+P[2]/10,1+P[2]/10);
    DrawLine(-5,-1-P[3]/10,1+P[3]/10,5,-1-P[3]/10,1+P[3]/10);
    end
  else if form1.ProvodRG.ItemIndex=1 then
    begin
    P[1]:=TB_Pos;
    DrawLine(-5,1+P[0]/10,-1-P[0]/10,5,1+P[0]/10,-1-P[0]/10);
    DrawLine(-5,-1-P[1]/10,-1-P[1]/10,5,-1-P[1]/10,-1-P[1]/10);
    DrawLine(-5,1+P[2]/10,1+P[2]/10,5,1+P[2]/10,1+P[2]/10);
    DrawLine(-5,-1-P[3]/10,1+P[3]/10,5,-1-P[3]/10,1+P[3]/10);
    end
  else if form1.ProvodRG.ItemIndex=2 then
    begin
    P[2]:=TB_Pos;
    DrawLine(-5,1+P[0]/10,-1-P[0]/10,5,1+P[0]/10,-1-P[0]/10);
    DrawLine(-5,-1-P[1]/10,-1-P[1]/10,5,-1-P[1]/10,-1-P[1]/10);
    DrawLine(-5,1+P[2]/10,1+P[2]/10,5,1+P[2]/10,1+P[2]/10);
    DrawLine(-5,-1-P[3]/10,1+P[3]/10,5,-1-P[3]/10,1+P[3]/10);
    end
    else if form1.ProvodRG.ItemIndex=3 then
    begin
    P[3]:=TB_Pos;
    DrawLine(-5,1+P[0]/10,-1-P[0]/10,5,1+P[0]/10,-1-P[0]/10);
    DrawLine(-5,-1-P[1]/10,-1-P[1]/10,5,-1-P[1]/10,-1-P[1]/10);
    DrawLine(-5,1+P[2]/10,1+P[2]/10,5,1+P[2]/10,1+P[2]/10);
    DrawLine(-5,-1-P[3]/10,1+P[3]/10,5,-1-P[3]/10,1+P[3]/10);
    end

  else if form1.ProvodRG.ItemIndex=-1 then
    begin
    DrawLine(-5,1,-1,5,1,-1);
    DrawLine(-5,-1,-1,5,-1,-1);
    DrawLine(-5,1,1,5,1,1);
    DrawLine(-5,-1,1,5,-1,1;

    end;

  end;
ProvodRG- радиогрупп
TB_Pos- пизиция трек бара.
Seran4ek вне форума Ответить с цитированием
Старый 29.11.2009, 00:12   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

полностью... а где вы после выбора чекета, но перед прорисовкой устанавливаете позицию тракбара в положение соотвествующее нужной линии?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.11.2009, 00:31   #7
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

но в том то и дело, что я не знаю этого смещения для линии. начальное 0. сместил первую, переключил и смещение первой передалось 2й, а первая вернулась на место.
путанина такая Т_Т
Seran4ek вне форума Ответить с цитированием
Старый 29.11.2009, 01:15   #8
Seran4ek
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 94
По умолчанию

ура. половину проблемы решил.
Код:
P[0]:=mas1[0].p;
    P[2]:=mas1[2].p;
    P[3]:=mas1[3].p;
    P[1]:=TB_Pos;
    mas1[1].p:=P[1];
это для Чект 1го итема и перемещения первой линии. и так во всех Чектах, только
Код:
P[1]:=TB_Pos;
меняется. я вызываю сохраненные давнные для каждой линии.
но вот еще зацепка, значение Трекбар.позишн не меняется, и при поэтому считываемые новые данные
Код:
    P[1]:=TB_Pos;
сразу перекидывают на позишн. а если пытаться занулить то линии стоят на месте.
Seran4ek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
трабла с прогой kafatron Помощь студентам 2 04.09.2009 23:05
Трабла с переносом данных... winfacks Microsoft Office Excel 22 30.04.2009 11:50
трабла с PlaySound C-мэн Win Api 2 16.11.2008 18:35
Трабла с RaveReport5 heavy Общие вопросы Delphi 0 23.02.2007 15:14
Трабла с иконкой дисков, XP SP-2 Алекс. Софт 21 15.12.2006 15:51