![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| artanis |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 21.3.2012 Репутация: нет Всего: нет |
Добрый день.
Есть форма с гридом и кнопкой Open необходимо о клику на кнопке Open – открыть диалог выбора txt файла, который затем считывается и заносится в грид. Разделитель данных внутри строк - символ табуляции. В гриде данные должны быть отсортированы (любое число в колонке выше любого не числа, числа отсортированы по возрастанию, строки в лексикографическом порядке). Сортировка производится сначала по первой колонке грида, потом по второй (если строки или числа в первой колонке совпадают) и т.д.. txt файл получен путем экспорта из Excel. Данные относящиеся к одной строке файла в гриде должны быть также в одной строке. Никак не могу разобраться с сортировкой. Нашел пример процедуры, которая сортирует Grid по строкам одного столбца. Вот код функции
Как можно адаптировать данную сортировку к поставленной задаче? Вот код всей программы
|
||||
|
|||||
| devitchenskiy |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 27.6.2012 Репутация: нет Всего: нет |
Я у себя в программе использую составные заголовки. в качестве разделителя в моих примерах используется ' - '. То, что до разделителя - параметры столбца, которые я заполняю по своим правилам. После разделителя - непосредственно название столбца.
В качестве параметров я указываю в т.ч. тип данных (у меня там параметры просто через запятую) - int (целые), float (дробные), check (логические, 0 - ложь, 1 - истина), txt (строковые), dat (дата и время) отрисовку ячеек делаю в ручную, в которой убираю параметры из заголовков, рисую данные в ячейках в соответствии с форматом (например логические показываю в виде галочки checkbox). ну и соответственно, реализована сортировка по любой колонке по целчку мышкой по заголовку. т.к. сортировка используется много где, непосредственно сортировка реализована в отдельной процедуре, а непосредственно на гриде:
ну и непосредственно сортировка:
ну и до кучи процедура отрисовки ячейки (свойство DefaultDrawing отключить!):
Надеюсь поможет кому-нибудь. Со своей стороны могу попросить помощи в реализации иной задачи: необходимо добавить фильтрацию на этот грид. интерфейс вижу таким: Если в параметрах есть 'filter' - значит по колонке возможна фильтрация и надо нарисовать кнопку-раскрывашку как у комбобокса (это ерунда, а не вопрос). при клике мышкой смотреть попал на раскрывашку или мимо. Если мимо, то сортировать по приведенному выше алгоритму. Если попал, то показать а-ля чекбокс, заполненный всеми возможными значениями из этого столбца. и кнопки "Отметить все", "Снять все отметки", "Инвертировать выбор", "ОК", "Отмена" по жамку на "ОК" пробежать по стобцу и установить высоту строки -1 для всех, неудовлетворяющих фильтру. Сложностями вижу алгоритм применения фильтра при условии фильтрации по нескольким колонкам. Подсказки как реализовать все остальное не требуются.
Это сообщение отредактировал(а) MetalFan - 28.6.2012, 15:07 |
||||||||
|
|||||||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Это жесть.
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
devitchenskiy, читать до просветления
http://forum.vingrad.ru/forum/topic-353769.html отредактируй своё сообщение, оставь только нужную здесь, проблемную часть, оберни код в теги |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |