Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

как отсортировать StringGrid по любой колонке??   Найти похожие ветки 

 
HeZgox   (2003-09-08 23:59) [0]

как отсортировать StringGrid по любой колонке??


 
malkolinge   (2003-09-09 00:35) [1]

Там rows $ cols
вроде Tstrings, наверное от этого и крутиться


 
HeZgox   (2003-09-09 01:33) [2]

в смысле Sort?? ... тама такого нету вроде, что странно :\


 
Alex Konshin   (2003-09-09 07:46) [3]

А не StringGrid не подойдет?


 
dima_shapkin   (2003-09-09 10:29) [4]

var
S : TStringList;
i : LongInt;
begin
S := TStringList.Create(nil);
for i := Grid.FixedRows to RowCount - 1 do
S.AddObject(Grid.Cells[ACol, i], TObject(i));
S.Sort; // Быстрая сортировка, действительно быстрая :)
// Потом в соответсвии с позицией строки TObject(i) меняешь все позии в Cells. Типа мысль понятна, все остальное писать нет смысла.
S.Free;
end;


 
McSimm2   (2003-09-09 10:48) [5]


procedure TFrm_main.GridMSort(AGrid: TStringGrid; const SortField: integer);

procedure ExchangeItems(Index1, Index2: Integer);
var
i: integer;
T: string;
begin
for i := 0 to AGrid.ColCount - 1 do
begin
T := AGrid.Cells[i, Index1];
AGrid.Cells[i, Index1] := AGrid.Cells[i, Index2];
AGrid.Cells[i, Index2] := T;
end;
end;

procedure QuickSort(L, R: integer);
var
I, J: Integer;
P: string;
begin
repeat
I := L;
J := R;
P :=AGrid.Cells[SortField, (L+R) shr 1];
repeat
begin
while CompareText(AnsiUpperCase(AGrid.Cells[SortField, I]),
AnsiUpperCase(P)) < 0 do
Inc(I);
while CompareText(AnsiUpperCase(AGrid.Cells[SortField, J]),
AnsiUpperCase(P)) > 0 do
Dec(J);
end;
if I <= J then
begin
ExchangeItems(I, J);
Inc(I);
Dec(J);
end;
until I > J;
if L < J then QuickSort(L, J);
L := I;
until I >= R;
end;

begin
if AGrid.RowCount > 1 then QuickSort(0, AGrid.RowCount-1);
end;


 
HeZgox   (2003-09-09 12:10) [6]

>Alex Konshin
>А не StringGrid не подойдет?
к сожалению нет, придёться многа кода переделывать

>McSimm2
спасибо всё отлично работает!

ВСЕММ СПАСИБ! :)



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

Текущий архив: 2003.09.22;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.012 c
3-71497
www
2003-09-01 14:24
2003.09.22
Сохранение изменений в форме


3-71544
Def
2003-09-02 11:46
2003.09.22
CommitRetaining отправляет в базу не все обновления


4-71999
artemkin
2003-07-17 19:10
2003.09.22
Мышь


1-71610
mfender
2003-09-09 04:05
2003.09.22
TIME_ZONE, или как определить сторону света.


9-71455
Призрак_Коммунизма
2003-02-28 09:51
2003.09.22
Крутим спрайт вокруг своей оси





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