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

Вниз

Как отсортировать эл-ты в TStringGrid ???   Найти похожие ветки 

 
JC   (2002-08-19 00:15) [0]

^^^


 
^Sanya   (2002-08-19 00:17) [1]

по алфавиту?


 
JC   (2002-08-19 00:27) [2]

Конечно,а как ещё?


 
Ученик   (2002-08-19 00:59) [3]

procedure SortStringGrid(StringGrid: TStringGrid; Col, L, R: Integer);
var
I, J, P: Integer;
Temp : TStringList;
begin
repeat
I := L;
J := R;
P := (L + R) shr 1;
repeat
while StringGrid.Cells[Col, i] < StringGrid.Cells[Col, P] do
Inc(I);
while StringGrid.Cells[Col, j] > StringGrid.Cells[Col, P] do
Dec(J);
if I <= J then
begin
Temp := TStringList.Create;
try
Temp.Assign(StringGrid.Rows[i]);
StringGrid.Rows[i].Assign(StringGrid.Rows[j]);
StringGrid.Rows[j].Assign(Temp)
finally
Temp.Free
end;
Inc(I);
Dec(J);
end;
until I > J;
if L < J then
SortStringGrid(StringGrid, Col, L, J);
L := I;
until I >= R
end;


 
Ученик   (2002-08-19 01:01) [4]

Вызов: SortStringGrid(StringGrid1, 1, 1, StringGrid1.RowCount - 1);


 
JC   (2002-08-19 01:03) [5]

Ученик - Что такое L{eft}, R{ight}: Integer??


 
Ученик   (2002-08-19 08:46) [6]

L - начальная сортируемая строка StringGrid-a, R-конечная сортируемая строка StringGrid-a, это алгоритм быстрой сортировки (QuickSort), не узнали ? :)))


 
JC   (2002-08-19 16:36) [7]

Работает он как-то не так!!! При сортировке SortStringGrid(StringGrid1, 0, 1, StringGrid1.RowCount - 1); Он сортирует только первую колонку, при повторном вызове результат изменяется ( В


 
Ученик   (2002-08-19 16:49) [8]

>JC © (19.08.02 16:36)
Сортирует он по колонке, которая передана в качестве параметра, при повторном вызове процедуры с теми же параметрами результат не меняется.

Если необходимо другое сравнение, то меняются строки

while StringGrid.Cells[Col, i] < StringGrid.Cells[Col, P] do
Inc(I);
while StringGrid.Cells[Col, j] > StringGrid.Cells[Col, P] do
Dec(J);


 
JC   (2002-08-19 17:06) [9]

Ученик ты вообще это... пробывал та что зделал? B-)


 
Ученик   (2002-08-19 17:11) [10]

>JC © (19.08.02 17:06)
Да


 
Ученик   (2002-08-19 17:17) [11]

Но, где-то есть ошибка, тестовый пример оказался маленьким


 
Ученик   (2002-08-19 17:31) [12]

...
Temp := TStringList.Create;
try
Temp.Assign(StringGrid.Rows[i]);
StringGrid.Rows[i].Assign(StringGrid.Rows[j]);
StringGrid.Rows[j].Assign(Temp)
finally
Temp.Free
end;
if P = I then
P := J
else if P = J then
P := I;

Inc(I);
Dec(J);
...


 
JC   (2002-08-20 14:16) [13]

Ладно ту колонку которая указана он сортирует, а остальные
(следующие) оставляет(при первой с одинаковим значением):
1 2 3
1 1 2
2 2 3
А по идее надо:
1 1 2
1 2 3
2 2 3

=-(


 
Ученик   (2002-08-20 14:19) [14]

>JC © (20.08.02 14:16)
Ученик © (19.08.02 16:49)



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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
1-3329
кондратий
2002-08-21 17:14
2002.09.02
как узнать открыт ли файл ...


14-3593
besa
2002-08-05 17:33
2002.09.02
VisionFS 3.x под SCO Unix vare 7.01


1-3372
EugenCFG
2002-08-20 14:51
2002.09.02
Как динамически создать Edit...


3-3251
zx
2002-08-12 11:05
2002.09.02
ADO String


14-3589
dial@uupops.net
2002-08-06 20:01
2002.09.02
Что такое hInstance





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский