|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
Доброе время суток. Пытаюсь отсортировать компоненты на flowpanel, созданные в ран тайме но, сортировка происходит не правильно, некоторые компоненты принимают правильную последовательность а некоторые нет. на flowpanel создаю 10 обычных панелей. На каждой панеле прогрессбар (TsArcGauge, но суть одна и та же).. пытаюсь сортировать по значению прогрессбара. Код: pascal 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.
где я накосячил? вроде логика правильная.. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 11:56 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
Это какой-то странный способ сортировки, но он немного похож на https://www.google.com/search?q=паскаль сортировка пузырьком ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 12:07 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
wadman Это какой-то странный способ сортировки, но он немного похож на https://www.google.com/search?q=паскаль сортировка пузырьком у меня сложность заключается в том что, к примеру создано панелей 1,2,3,4,5 если я удалю к примеру панель под индексом[4] (просто сделаю FreeAndNil(P[4]); ) индексация flowpanel будет 1,2,3,4, без пятёрки, то-есть сместятся. а массив компонентов будет 1,2,3,5 без четверки. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 17:25 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
Tech N9ne, 1) А почему не использовать динамические массивы? Тогда при удалении не будет пропусков в массивах. 2) В качестве бреда - если сначала получать значения прогрессбаров и заполнять в какой-то массив (индекс-значение), а потом, отсортировав по значениям, расположить панели так, как индексы расположились в этом массиве. Просто может ли значение прогрессбара измениться после того, как данная панель будет отсортированна. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 18:47 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
goldmi45 1) А почему не использовать динамические массивы? Тогда при удалении не будет пропусков в массивах. P.S. Если использовать TList<>, то у него есть метод Sort, которому можно подсунуть произвольный Comparer ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 18:51 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
Тут изначально всё через жопу написано. Это ещё додуматься надо использовать визуальные компоненты в процессе "алгоритма" сортировки. ТС - научись разделять алгоритмическую и визуальную части. Сначала, всё вычисляешь - потом отображаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 23:25 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
_Vasilisk_ goldmi45 1) А почему не использовать динамические массивы? Тогда при удалении не будет пропусков в массивах. P.S. Если использовать TList<>, то у него есть метод Sort, которому можно подсунуть произвольный Comparer Не прав был. Можно использовать TObjectList. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 07:45 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
_Vasilisk_ goldmi45 1) А почему не использовать динамические массивы? Тогда при удалении не будет пропусков в массивах. P.S. Если использовать TList<>, то у него есть метод Sort, которому можно подсунуть произвольный Comparer Хороший вариант! Есть также вариант обойтись без Comparer: добавить элементы в список TStringList (с помощью TStringList.AddObject) и отсортировать с помощью метода TStringList.Sort. В этом случае сортировка выполняется в алфавитном порядке (но нужно формировать строки таким образом, чтобы их потом можно было отсортировать, например, вместо 1 указывать 001, чтобы было фиксированное кол-во символов). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 09:33 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
Код: pascal 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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
сортировка в самом массиве происходит правильно, я вывожу массив в мемо, что бы убедится что сортировка правильная. но вот расположение панелей не совсем правильное, точнее та панель с прогрессбаром который имеет самое большое значение, встает предпоследним а не последним. Если нажимать кнопку сортировки несколько раз подряд, то панель с этим прогрессбаром, каждую сортировку перепрыгивает через 1, и доберается до номера 1, то бишь всплывает как пузырь. если кто не понял: 1,2,3,5,4 - первая сортировка, пятёрка не на своем месте 1,2,5,3,4 - вторая сортировка 1,5,2,3,4 - третья и тд, пока 5 не встанет на место 1. раз сортировка пузырем самого массива проходит правильно, то проблема в этом куске кода: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Но опять же, не могу понять что не так сделал. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 10:49 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
Tech N9ne, несколько ошибок: 1) Код: pascal 1.
может не быть равным количеству значащих элементов в массиве P (к примеру, удалили панель) 2) выведете значения прогрессов до перемещения, но после сортировки. Возможно, значение прогрессов в массиве Arr отличаются от фактических. Поэтому нужно знать не просто значение прогресса, но и индекс в массиве для этого прогресса. 3) Код: pascal 1.
А если не совпадает, что тогда? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 12:40 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
Здесь плохо всё, от использования неинициализированных локальных переменных, до сортировки пузырьком. Последний раз я её использовал будучи студентом, когда сам её "изобрёл" в рамках лабораторной рвботы. Возьми TList<TsPanel>, отсортируй через делегат, пробегись по полученному и выставь последовательно индексы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 13:10 |
|
сортировка компонентов в Flowpanel
|
|||
---|---|---|---|
#18+
Tech N9ne, а зачем Вы два массива создаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 13:17 |
|
|
start [/forum/topic.php?fid=58&msg=40119717&tid=2036781]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 155ms |
0 / 0 |