![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
MerCus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
есть таблица со значениями StringGrid, нужно отсортировать эти значения по столбцу (пусть будет столбец А), то есть один столбец(А) сортируем по возрастанию, а значения остальных столбцов сортируются соответственно значениям столбца А.
в Ecxel'e есть такая сортировка, думаю многие с ней знакомы. надо тоже самое организовать в StringGrid'е. может вопрос ламерский, но разобраться не могу, помогите пожалуйста! заранее спасибо! |
|||
|
||||
MerCus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
вот код который пишу я:
надо было пояснение написать.. так вот arg - это массив столбца в котором производим сортировку по возрастанию, а- это двумерный массив всех значений СтрингГрида. Это сообщение отредактировал(а) MerCus - 3.10.2008, 02:37 |
|||
|
||||
Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 1 Всего: 27 |
В StringGride есть свойство Index наверно это то что тебе надо
-------------------- Возмездие настигнет |
|||
|
||||
MerCus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
не знаю, что вы имели ввиду, но свойства Индекс у СтрингГрида нет, если вы хотели мне сказать, что менять значения надо по соответствующим индексам, то я догодался и сам об этом, только у меня не выходит грамотно это прописать, поэтому я и обратился за помощью
![]() |
|||
|
||||
Staruha |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 1 Всего: 27 |
![]() Я по твоему образу написала код но он ругается на StringGrid1Sells[i-1,0]; наверно потому что String не заполнен.
-------------------- Возмездие настигнет |
||||
|
|||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
нет. Потому что нужна точка и не правильно написано.
StringGrid1.Сells[i-1,0]; Это сообщение отредактировал(а) Poseidon - 2.10.2008, 14:12 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
uranpro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 571 Регистрация: 7.5.2008 Где: Moscow city Репутация: нет Всего: 1 |
Staruha,
![]() ![]() "ол рихтс!"- сказал студент-самоучка, изучающий английский язык, положив на стол газету "невс тимес" Это сообщение отредактировал(а) uranpro - 2.10.2008, 16:25 -------------------- I want a perfect soul |
|||
|
||||
MerCus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
по существу ответа так и не было, больше ни у кого никаких мыслей нет?
|
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Можно либо делать сортировку в ручную, запихивая всю таблицу в многомерный массив, либо использовать другой компонент. К примеру, VirtualStringTree.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 1 Всего: 27 |
MerCus нам немножко осталось до правильного решения.Я в коде все исправила больше не ругается только опять не могу тестировать.Вопрос Что в String данные тоже программно вводить?Чейто я не найду там ReadOnly
-------------------- Возмездие настигнет |
|||
|
||||
Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 1 Всего: 27 |
OPtions.goEditing люди добрые подсказали.
Сейчас че-нить накопаю -------------------- Возмездие настигнет |
|||
|
||||
Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 1 Всего: 27 |
Работает
![]()
-------------------- Возмездие настигнет |
|||
|
||||
THandle |
|
||||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Что то подобное:
Заполним StringGrid:
Сортируем:
Сортирует СТРОКИ, а не числа, которые взяты просто для примера ![]() |
||||
|
|||||
MerCus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
Staruha вы сортируете один столбец! это проще простого, а мне надо один столбец сортировать по возрастанию, а все остальные по этому столбцу.
THandle спасибо, но тоже не совсем то. короче обьясняю как делаю я, и это скорее всего правильно, только наверное не совсем))) делаем через массив, потом этот массив выводим в стринггрид. сортируем один столбец (который выбирает пользователь), запоминаем индекс числа в массиве которое меняем, и меняем числа в других столбцах с таким же индексом. собственно всё это отражает мой код во втором сообщении, а вы ребята, то ли меня не поняли, то ли от темы ушли. вы все к СтрингГриду прицепились, сортировать надо через массив, а потом его просто вывести. |
|||
|
||||
Staruha |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 1 Всего: 27 |
THandle
Я сама поражаюсь как это происходит ,но Строка в мною приведенном коде сортируется Супер ,а именно по первой букве ,по второй,третьей и т.д. MerCus
спасибо тебе MerCus ![]() так что получается,если Stroka:=StringGrid1.Cells[1,k]+StringGrid1.Cells[2,k]+.....; тоже должна сортироваться по тому же принципу. А массив или String(ты сам просил,хотя во всех примерах сортируются массивы) это просто контейнер. -------------------- Возмездие настигнет |
||||
|
|||||
THandle |
|
||||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
При сравнении
Вызывается функция UStrCmp, которая и сравнивает эти строчки ![]() MerCus, зачем нужен массив, когда можно свободно обойтись без него. Не устраивает мой пример, тем что он сортирует по первому столбцу? Но ведь не сложно его изменить так чтоб он сортировал по любому другому ![]() |
||||
|
|||||
MerCus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
массив не лишний, по крайней мере для меня, так как я провожу основные работы именно с массивами, а Стринггрид просто для визуализации.
короче либо я тупой, но у меня ничего не получается)) мне строки то в принципе особо не нужны, у меня везде числа. ктонить попробуйте сделать такую сортировку с массивом. спасибо всем за ответы, извините, что я туплю)) но мне это очень надо сделать, а у меня не получается Это сообщение отредактировал(а) MerCus - 7.10.2008, 00:59 |
|||
|
||||
Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 1 Всего: 27 |
сортируем String .Массив как буфер для ячеек по столбцам
-------------------- Возмездие настигнет |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Это сообщение отредактировал(а) THandle - 8.10.2008, 19:19 |
|||
|
||||
Poseidon |
|
||||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Я тебе об этом писал в самом начале:
Короче, вы мне надоели. Простую задачку расжовываете уже вторую страницу. Вот код (единственное условие - в гриде должны быть ТОЛЬКО числовые значение, что, собственно, оговаривалось выше).
Сортируем StringGrid1 по 2 столбцу (в функцию передаем 1, т.к. в гриде отсчет начинается с 0).
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||||
|
|||||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
Poseidon, первая строка у тебя вроде как не сортируется...
Кстати, чем мой код не устроил? |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Это от чего же?
Чесно? Много букафффф ![]() -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
MerCus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 24.3.2008 Репутация: нет Всего: нет |
Всем спасибо за помощь! всё работает, всё понял)))
|
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 65 Всего: 372 |
MerCus, помечай тему как решенную.
Poseidon, не убедил)) у меня пример - пусть человек разбирается. У тебя готовое решение. Что лучше. Конечно же 1. ![]() |
|||
|
||||
Staruha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1292 Регистрация: 1.2.2004 Где: Казань Репутация: 1 Всего: 27 |
А мой код чем плох? Он такой маленький а сортирует не хуже ваших.
![]() -------------------- Возмездие настигнет |
|||
|
||||
Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Добавлено через 14 минут и 35 секунд
![]()
![]() -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |