| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Сортировка по столбцу |
| Автор: MerCus 1.10.2008, 03:24 |
| есть таблица со значениями StringGrid, нужно отсортировать эти значения по столбцу (пусть будет столбец А), то есть один столбец(А) сортируем по возрастанию, а значения остальных столбцов сортируются соответственно значениям столбца А. в Ecxel'e есть такая сортировка, думаю многие с ней знакомы. надо тоже самое организовать в StringGrid'е. может вопрос ламерский, но разобраться не могу, помогите пожалуйста! заранее спасибо! |
| Автор: MerCus 1.10.2008, 04:02 | ||
вот код который пишу я:
надо было пояснение написать.. так вот arg - это массив столбца в котором производим сортировку по возрастанию, а- это двумерный массив всех значений СтрингГрида. |
| Автор: Staruha 1.10.2008, 10:52 |
| В StringGride есть свойство Index наверно это то что тебе надо |
| Автор: MerCus 2.10.2008, 00:38 |
| не знаю, что вы имели ввиду, но свойства Индекс у СтрингГрида нет, если вы хотели мне сказать, что менять значения надо по соответствующим индексам, то я догодался и сам об этом, только у меня не выходит грамотно это прописать, поэтому я и обратился за помощью |
| Автор: Staruha 2.10.2008, 11:57 | ||||
Я по твоему образу написала код но он ругается на StringGrid1Sells[i-1,0]; наверно потому что String не заполнен.
|
| Автор: Poseidon 2.10.2008, 14:11 |
| нет. Потому что нужна точка и не правильно написано. StringGrid1.Сells[i-1,0]; |
| Автор: uranpro 2.10.2008, 15:56 |
| Staruha, "ол рихтс!"- сказал студент-самоучка, изучающий английский язык, положив на стол газету "невс тимес" |
| Автор: MerCus 3.10.2008, 02:38 |
| по существу ответа так и не было, больше ни у кого никаких мыслей нет? |
| Автор: Poseidon 3.10.2008, 09:03 |
| Можно либо делать сортировку в ручную, запихивая всю таблицу в многомерный массив, либо использовать другой компонент. К примеру, VirtualStringTree. |
| Автор: Staruha 3.10.2008, 11:12 | ||
MerCus нам немножко осталось до правильного решения.Я в коде все исправила больше не ругается только опять не могу тестировать.Вопрос Что в String данные тоже программно вводить?Чейто я не найду там ReadOnly
|
| Автор: Staruha 3.10.2008, 11:50 |
| OPtions.goEditing люди добрые подсказали. Сейчас че-нить накопаю |
| Автор: Staruha 3.10.2008, 14:40 | ||
Работает
|
| Автор: THandle 4.10.2008, 09:57 | ||||
| Что то подобное: Заполним StringGrid:
Сортируем:
Сортирует СТРОКИ, а не числа, которые взяты просто для примера |
| Автор: MerCus 6.10.2008, 00:46 |
| Staruha вы сортируете один столбец! это проще простого, а мне надо один столбец сортировать по возрастанию, а все остальные по этому столбцу. THandle спасибо, но тоже не совсем то. короче обьясняю как делаю я, и это скорее всего правильно, только наверное не совсем))) делаем через массив, потом этот массив выводим в стринггрид. сортируем один столбец (который выбирает пользователь), запоминаем индекс числа в массиве которое меняем, и меняем числа в других столбцах с таким же индексом. собственно всё это отражает мой код во втором сообщении, а вы ребята, то ли меня не поняли, то ли от темы ушли. вы все к СтрингГриду прицепились, сортировать надо через массив, а потом его просто вывести. |
| Автор: Staruha 6.10.2008, 09:00 | ||||
THandle
Я сама поражаюсь как это происходит ,но Строка в мною приведенном коде сортируется Супер ,а именно по первой букве ,по второй,третьей и т.д. MerCus
спасибо тебе MerCus так что получается,если Stroka:=StringGrid1.Cells[1,k]+StringGrid1.Cells[2,k]+.....; тоже должна сортироваться по тому же принципу. А массив или String(ты сам просил,хотя во всех примерах сортируются массивы) это просто контейнер. |
| Автор: MerCus 7.10.2008, 00:51 |
| массив не лишний, по крайней мере для меня, так как я провожу основные работы именно с массивами, а Стринггрид просто для визуализации. короче либо я тупой, но у меня ничего не получается)) мне строки то в принципе особо не нужны, у меня везде числа. ктонить попробуйте сделать такую сортировку с массивом. спасибо всем за ответы, извините, что я туплю)) но мне это очень надо сделать, а у меня не получается |
| Автор: Staruha 8.10.2008, 08:15 | ||
сортируем String .Массив как буфер для ячеек по столбцам
|
| Автор: THandle 8.10.2008, 11:15 | ||
|
| Автор: Poseidon 8.10.2008, 12:51 | ||||||
Я тебе об этом писал в самом начале:
Короче, вы мне надоели. Простую задачку расжовываете уже вторую страницу. Вот код (единственное условие - в гриде должны быть ТОЛЬКО числовые значение, что, собственно, оговаривалось выше).
Сортируем StringGrid1 по 2 столбцу (в функцию передаем 1, т.к. в гриде отсчет начинается с 0).
|
| Автор: THandle 8.10.2008, 14:22 |
| Poseidon, первая строка у тебя вроде как не сортируется... Кстати, чем мой код не устроил? |
| Автор: Poseidon 8.10.2008, 16:26 |
| Это от чего же? Чесно? Много букафффф |
| Автор: MerCus 9.10.2008, 01:48 |
| Всем спасибо за помощь! всё работает, всё понял))) |
| Автор: THandle 9.10.2008, 02:02 |
| MerCus, помечай тему как решенную. Poseidon, не убедил)) у меня пример - пусть человек разбирается. У тебя готовое решение. Что лучше. Конечно же 1. |
| Автор: Staruha 9.10.2008, 08:01 |
| А мой код чем плох? Он такой маленький а сортирует не хуже ваших. |
| Автор: Poseidon 9.10.2008, 08:28 | ||||
Добавлено через 14 минут и 35 секунд
|