Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069

Двойная сортировка в StringGrid

19.11.2014, 22:22. Показов 1214. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добро всем
Никак не разберусь с сортировкой в StringGrid.
Первый шаг, сортирую по колонке "Характер заявки":
C++
1
2
3
4
5
6
7
8
9
10
11
int sf = StringGrid1->RowCount;
   for(int i=1;i<sf;i++)
     sl->Add(StringGrid1->Cells[4][i]+StringGrid1->Rows[i]->CommaText);
     sl->Sort();
     for(int i = StringGrid1->FixedRows; i < StringGrid1->RowCount; i++)
       {
       StringGrid1->Rows[i]->CommaText = sl->Strings[i - StringGrid1->FixedRows];
       StringGrid1->Cells[0][iDigi] = iDigi;
       iDigi++;
       }
   iDigi = 1;
После первого шага таблица разбилась на группы, и внутри каждой группы необходимо отсортировать по колонке "Адрес".
Как это сделать?
Миниатюры
Двойная сортировка в StringGrid  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2014, 22:22
Ответы с готовыми решениями:

двойная сортировка
Необходимо отсортировать массив, как показано на рисунке, используя класс/структуру с двумя переменными а (левая колонка) и б (правая...

Двойная сортировка
Как мне сначала отсортировать по дате, а потом по времени? Пробовал так, но не получается. Уже позабыл. Напомните, пожалуйста. ( ...

Двойная сортировка
Всем привет. Уже два дня разгребаю за одним &quot;хорошим&quot; верстальщиком. Есть страница &quot;Афиша&quot; у бара, которая выводит трансляции,...

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
20.11.2014, 00:27
Ну я же написал тебе:
Цитата Сообщение от UI Посмотреть сообщение
Если нужна какая-то хитрая сортировка - используй CustomSort...
, так нет же, ты опять сделал по-своему, и теперь опять пришел, потому что не знаешь, как быть дальше. Что, не выходит каменный цветок? Делал бы через стандартные методы - проблем бы не было никаких:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
struct Sorter : public TObject
{
    String FType;
    String FAddr;
 
    Sorter(String type, String addr) : TObject(), FType(type), FAddr(addr)
    {
    }
};
 
int __fastcall MyCompare(TStringList *List, int I1, int I2)
{
    Sorter *s1 = static_cast<Sorter*>(List->Objects[I1]);
    Sorter *s2 = static_cast<Sorter*>(List->Objects[I2]);
    if (s1->FType == s2->FType)
        return CompareStr(s1->FAddr, s2->FAddr); // Одинаковые характеры - сортируем адреса
    else
        return CompareStr(s1->FType, s2->FType); // Сортируем по характеру заявки
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    std::auto_ptr<TStringList>L(new TStringList);
    for (int i = StringGrid1->FixedRows; i < StringGrid1->RowCount; i++)
        L->AddObject(StringGrid1->Rows[i]->CommaText,
            new Sorter(StringGrid1->Cells[4][i], StringGrid1->Cells[1][i])); // 1 - номер колонки с адресом, 4 - с характером заявки
 
    L->CustomSort(MyCompare);
 
    for (int i = 0; i < L->Count; i++)
    {
        Sorter *p = static_cast<Sorter*>(L->Objects[i]);
        StringGrid1->Rows[i + StringGrid1->FixedRows]->CommaText = L->Strings[i];
        StringGrid1->Cells[0][i + StringGrid1->FixedRows] = IntToStr(i + 1);
        delete p;
    }
}
Где тут ошибиться можно - не вижу...
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.11.2014, 17:41
Samrisbe, И не стоит забывать что можно сделать через DrawGrid что на мой взгляд лучше.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2014, 17:41
Помогаю со студенческими работами здесь

Двойная сортировка OrderBy
Ребят подскажите пожалуйста как сортировать данные по двум критериям с помощью OrderBy. Просто в IEnumerable&lt;Student&gt;...

двойная сортировка в ORDER BY
Есть SQL-запрос к базе на выборку по двум полям, в первом выбирается несколько конкретных записей и делается сортировка по убыванию, во 2-м...

Частичная двойная сортировка
Добрый день. Подскажите, как сделать двойную сортировку: 1-е поле - 'one', состоящее из цифры 1 или 0. 2-е поле - 'id', состоящее из...

Двойная сортировка в подчиненной форме
Всем привет. Имеется таблица в которой есть поле дата и код. Как мне отсортировать по дате, по убыванию, а в отсортированном еще по...

Двойная сортировка массива объектов
Добрый день, я в java новичок, возник следующий вопрос. Каким образом лучше всего осуществить двойную сортировку массива объектов. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru