Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

правильная работа с цветом [D6, XP]


DSKalugin ©   (2005-11-22 13:07:00) 

Всем привет. Вот уж не думал что меня занесет в раздел к «Начинающим» :-))
Есть список деталей, которые надо покрасить определенным образом.Взаимозаменяемые (те которые tmpReadQuery.Fields[0].AsString='Y')должны быть одинакового цвета. Общий список может содержать произвольное количество деталей.
Как грамотно вычислять палитру фона для каждого последующего блока взаимозаменяемых деталей?
Если я вычитаю по 255 от белого, то цвет не меняется. Ставлю - 400 - меняется...

   if (tpCross=0) then begin
   with tmpReadQuery do begin
     Close;
     SQL.Text:='SELECT YN FROM "ChkCrossLink"(:c1,:c2,'+IntToStr(Vendor_ID)+')';
     Prepare;
   end;
   packColor:=clWhite-2;  UseColor:=True;
   crList[0].crBgColor:=packColor;
   for i:=0 to CrossCount-1 do begin
      tmpReadQuery.ParamByName('c1').AsInteger:=crList[i].crInd;
      if (crList[i].crBgColor=clWhite) then begin
        if UseColor then packColor:=packColor-400;
        UseColor:=False;
        crColor:=packColor;
        crList[i].crBgColor:=crColor;
      end
      else crColor:=crList[i].crBgColor;
      for j:=i+1 to CrossCount-1 do begin
        // if (crList[j].crBgColor<>clWhite) then Continue;
         tmpReadQuery.ParamByName('c2').AsInteger:=crList[j].crInd;
         tmpReadQuery.ExecQuery;
         if tmpReadQuery.Fields[0].AsString='Y'
         then begin
           crList[j].crBgColor:=crColor; //
           UseColor:=True;
         end;
         tmpReadQuery.Close;
      end;
   end;
   end;


DSKalugin   (2005-11-22 14:29:00) [1]


>  множество неизвестных переменных.

да код этот и даром тут не нужен, так просто привел.
достаточно было написать тут


var packColor:TColor;
...
packColor:=clWhite-2;
начало цыкла
packColor:=packColor-400;
конец цикла


Вопрос как с цветом работать. Вернее как его менять правильно.
Подал по другому, пожалуйста, Анатолий. Но не в подаче дело. Уверен на все 100% что вам нечего ответить просто навсего. Так зачем морать страницу?


clickmaker   (2005-11-22 14:20:00) [2]


> Если я вычитаю по 255 от белого, то цвет не меняется. Ставлю
> - 400 - меняется

255 от всех 32-бит? Это слишком мало, чтоб на глаз заметить.
Раскладывай на R,G,B и от них отнимай


Anatoly Podgoretsky   (2005-11-22 14:08:00) [3]

DSKalugin ©   (22.11.05 13:07)  
Всем привет. Вот уж не думал что меня занесет в раздел к «Начинающим» :-))

Ну так и тема вопроса соответсвует. И подача материала тоже, множество неизвестных переменных.


Наверх

Титульная страница Поиск, карта сайта Написать письмо