Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];

Вниз

Численная сортировка   Найти похожие ветки 

 
Василич   (2002-08-05 12:09) [0]

Не подскажете, как отсортировать строки в ComboBox, если они представляют из себя численные значения, допустим у меня в ComboBox грузятся из базы некоторые численные значения, и получается так:

1024
128
16
160
192
24
256
32
4
48
512
64
8
96

а надо, чтобы была численная сортировка, а не строковая. Спасибо.


 
lenin   (2002-08-05 12:13) [1]

В ручную сортировать.


 
Василич   (2002-08-05 12:13) [2]

Как же вручную, если значения из базы данных вытаскиваются ?


 
lenin   (2002-08-05 12:16) [3]

А какая разница из базы или нет.


 
Ученик   (2002-08-05 12:18) [4]

WM_COMPAREITEM


 
Skier   (2002-08-05 12:21) [5]

>Василич
Можно так :
- перекачать все строки из ComboBox-а в TStringList.
- написать у него [TStringList-а] код метода CustomSort
- отсортировать строчки в TStringList-е
- засунуть строчки из TStringList-а обратно в ComboBox


 
c0pYc@t   (2002-08-05 12:51) [6]

а что strtoint не помогает?


 
Opuhshii   (2002-08-05 14:14) [7]

2Василич (05.08.02 12:13)
неужели даже метод пузырьковой сортировки вам неизвестен...


 
Skier   (2002-08-05 14:34) [8]

>Василич
А также : код быстрой сортировки (Хоора) можно подсмотреть
в Дельфийском примера по thread-ам...


 
IlyaA   (2002-08-05 15:07) [9]

Напиши собственный сортировщик


 
kull   (2002-08-05 18:49) [10]

А это не подойдет?
Select {field name} from {table name} order by {field name}

Данные приходят уже отсортированными...


 
Василич   (2002-08-05 22:05) [11]

>>kull

SELECT TOP 100 PERCENT RAM AS [Оперативная память]
FROM dbo.RAMs
ORDER BY RAM

Они не приходят отсортированными.

>>IlyaA

Каким образом ?

>> Ученик

Не подскажешь, как и когда обрабатывать это сообщение, и когда оно вообще возникает ?


 
kull   (2002-08-06 01:41) [12]


> Они не приходят отсортированными.

А RAM - это целочисленное поле или строка (может вообще вариантного типа)?
Если целочисленное, то что за БД у тебя?
Не приводит ли преобразование: RAM AS [Оперативная память] к нецелому типу?

Order by должен работать на ура, что то у тебя с запросом не то...



 
Василич   (2002-08-06 09:14) [13]

RAM smallint

MSSQL


 
Ученик   (2002-08-06 09:29) [14]

>Василич (05.08.02 22:05)
Все оказалось сложнее чем предполагалось, указанное сообщение посылается только, если ComboBox имеет стили CBS_OWNERDRAWFIXED и не имеет стилей CBS_HASSTRINGS, что влечет за собой дополнительные проблемы, поэтому в данном случае решение вряд ли подходит, сорри.


 
kull   (2002-08-06 11:16) [15]

2 Василич

Ну я не знаю. Я работаю с Interbase - у меня все с Order by в порядке. Если ORDER BY не сортирует, зачем он нужен?


 
IlyaA   (2002-08-06 12:13) [16]

Самый простой метод "Пузырька": (Вот тебе код)
Пусть данные в ListBox /надеюсь сам поймёшь как переделать/

For i:=0 to ListBox.Items.Count-1 do
For j:=ListBox.Items.Count-1 downto i do
If StrToInt(ListBox.Items[j]) < StrToInt(ListBox.Items[j-1]) then
begin
Tmp:=ListBox.Items[j];
ListBox.Items[j]:=ListBox.Items[j-1];
ListBox.Items[j-1]:=Tmp;
end;


Удачи.


 
Василич   (2002-08-06 13:44) [17]

>>IlyaA

Оно самое. Просто и конструктивно. Спасибо.


 
Song   (2002-08-06 16:10) [18]

Не надо никакого CustomSort(). У TStringList есть свойство Sorted. А у TComboBox.Items тип TStrings, прямая абстрактная зависимость... Зачем Вам пузырёк...? Тут и стакана хватит :-)


 
lenin   (2002-08-06 16:15) [19]

Sorted сортирует по алфавиту.


 
Василич   (2002-08-06 16:48) [20]

Да, я уже въехал. Все дело в том, что ComboBox.Sorted was True...., а сортировать данные в ComboBox"е не надо было...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
1-60563
kronprince
2002-08-07 17:27
2002.08.19
Дружественный класс


1-60711
dimushkin
2002-08-06 22:48
2002.08.19
ScrollBox


3-60509
Ник
2002-07-30 00:45
2002.08.19
TDBGrid


1-60713
msalex
2002-08-06 20:10
2002.08.19
Народ кто нибудь пробовал создовать свой компонент тапа Panel.


1-60698
Hellman
2002-08-06 08:16
2002.08.19
Шифрация





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский