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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2016, 19:34   #1
Porerri
 
Регистрация: 13.05.2016
Сообщений: 4
По умолчанию Алгоритм для закраски таблицы

Есть таблица вида:
Снимок14.jpg

ID - уникальное поле, IDкартр может повторяться, нужно закрасить так таблицу, чтобы каждый новый IDкартр по очереди красился то в белый, то в серый цвет. Сам процесс закраски я знаю как делать, а вот как сделать оптимальный алгоритм, что именно каким цветом закрашивать.. Подскажите, как лучше..
Porerri вне форума Ответить с цитированием
Старый 13.05.2016, 20:50   #2
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

а таблица DBGrid или StringGrid? или еще какая?
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 13.05.2016, 21:03   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вариант 1 - сделать вычисляемое поле в запросе с номером группы записей с одним [ID картр] и с такой же сортировкой. В гриде строки с четным num одним цветом, нечетным - другим. Запрос для MS SQL мог бы выглядеть так (возможно и проще можно, особо не вникал):
Код:
SELECT V.ID,V.[ID картр],U.num 
  FROM MyTable V,(SELECT [ID картр], row_number() over(ORDER BY [ID картр]) num FROM MyTable GROUP BY [ID картр]) U
  WHERE V.[ID картр]=U.[ID картр]
  ORDER BY V.[ID картр]
Вариант 2 - вычисляемое поле на уровне клиента, полный прогон по таблице с расчетом номера и записью его в тень таблицы. В OnCalcField этот номер брать из тени и помещать в вычисляемое поле. Красить так же, как в варианте 1. Самый простой вариант тени таблицы - динамический массив

1-ый вариант конечно предпочтительней и сильно. Это для DBGrid. StringGrid не интересно, там все прозрачно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.05.2016 в 21:10.
Аватар вне форума Ответить с цитированием
Старый 13.05.2016, 21:04   #4
Porerri
 
Регистрация: 13.05.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
а таблица DBGrid или StringGrid? или еще какая?
StrngGrid
Porerri вне форума Ответить с цитированием
Старый 13.05.2016, 21:21   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Заполняй его последовательно, в невидимую колонку признак цвета. Его и используй при раскраске. По сути вариант 2, только все в тени таблицы, Тень в данном случае сам StringGrid
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.05.2016, 01:24   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,877
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Заполняй его последовательно, в невидимую колонку признак цвета. Его и используй при раскраске. По сути вариант 2, только все в тени таблицы, Тень в данном случае сам StringGrid
А нафига тут некая "невидимая колонка"? Есть же свойство Objects.
northener вне форума Ответить с цитированием
Старый 14.05.2016, 08:04   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
свойство Objects
Ой, забыл про него. Тогда тем более все просто
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.05.2016, 12:29   #8
Porerri
 
Регистрация: 13.05.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Заполняй его последовательно, в невидимую колонку признак цвета. Его и используй при раскраске. По сути вариант 2, только все в тени таблицы, Тень в данном случае сам StringGrid
А можно про тени поподробнее, что-то я ничего не могу понять, как это в тени таблицы.
Porerri вне форума Ответить с цитированием
Старый 14.05.2016, 13:28   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Примерно так
Изображения
Тип файла: jpg Безымянный.jpg (50.9 Кб, 53 просмотров)
Вложения
Тип файла: zip Новая папка (29).zip (3.9 Кб, 10 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.05.2016, 17:28   #10
Porerri
 
Регистрация: 13.05.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Примерно так
Спасибо! Получилось.
Porerri вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм закраски D1894 Общие вопросы по Java, Java SE, Kotlin 3 06.03.2014 09:10
Методы закраски многоугольников Delphi Budda32 Помощь студентам 10 12.04.2013 10:08
vba script закраски ячеек funkodelic Microsoft Office Excel 4 06.11.2012 20:15
Алгоритм закраски карты Berckyt Общие вопросы .NET 3 02.06.2011 19:42