Текущий архив: 2004.05.23;
Скачать: CL | DM;
ВнизСортировка по колонкам в StringGrid? Найти похожие ветки
← →
Liona © (2004-05-09 17:24) [0]Как отсортировать в StringGrid по выбранной мышкой колонке?
← →
KilkennyCat © (2004-05-09 17:54) [1]http://www.sources.ru/delphi/gui/add_delete_sort_column_in_stringgrid.shtml - может, подойдет.
← →
Liona © (2004-05-09 18:14) [2]KilkennyCat © - спасибо, почитаю.
← →
Liona © (2004-05-09 18:58) [3]Нифига непонимаю, может кто поподробнее сможет помочь?
← →
pasha_golub © (2004-05-09 20:22) [4]Liona © (09.05.04 18:58) [3]
1. "не" с глаголами пишется отдельно!
2. Что именно не понятно. Покажите ваш кусок кода, который не работает.
← →
Palladin © (2004-05-09 20:26) [5]
> [4] pasha_golub © (09.05.04 20:22)
не переживай, ей нужен код C&P...
← →
pasha_golub © (2004-05-09 20:37) [6]Palladin © (09.05.04 20:26) [5]
:-)
← →
KilkennyCat © (2004-05-09 20:52) [7]Ну, если подробнее, то я бы сделал так:
Привязал бы к TStringGrid компонент THeaderControl (палитра Win32) - это позволило бы имитировать клик по заголовку столбца, и отлавливать его (клик).
Затем создается TStringList, в который заносится выбранный столбец. У TStringList есть свойство Sort. После сортировки столбец обновляется.
если же сортировка должна быть не только в одном столбце, но и привязана к другим (строки все вместе сортируются), то можно либо все занести в TStringList с каким либо разделителем, не имеющим аналога, например ■, также отсортировать и потом раскидать назад, либо просто воспользоваться любым алгоритмом сортировки, "пузырек" например, для одного столбца, но выпоняя его следить за связями с другими столбцами...
← →
тракторист (2004-05-10 07:19) [8]Вот кусок кода из моей проги:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
c,r:integer;//номер колонки и строки таблицы
m:integer;//Номер строки с максимальным значением
i:integer;//Номер строки использ.во время сортировки
buf:array[0..4] of string;//буфер для обмена строк
begin
for r:=1 to StringGrid1.RowCount-1 do
begin
m:=r;//макс.элемент в r-строке
for i:=r to StringGrid1.RowCount-1 do
if StringGrid1.Cells[0,i]<StringGrid1.Cells[0,m] then
m:=i;
if r<>m then
begin
for c:=0 to 4 do
begin
buf[c]:=StringGrid1.Cells[c,r];
StringGrid1.Cells[c,r]:=StringGrid1.Cells[c,m];
StringGrid1.Cells[c,m]:=buf[c];
end;
end;
end;
end;
Страницы: 1 вся ветка
Текущий архив: 2004.05.23;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.036 c