Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.024 c
14-1083681453
ИМХО
2004-05-04 18:37
2004.05.23
Delphi + OpenOffice


3-1083170401
MicroWorld
2004-04-28 20:40
2004.05.23
Фильтрация данных в IBTabl


3-1082976172
gleb_b
2004-04-26 14:42
2004.05.23
А где в компонентах DAO транзакции?


14-1083791552
saNat
2004-05-06 01:12
2004.05.23
Хоккей. США - Чехия 3-2


11-1068856196
Ciber SLasH
2003-11-15 03:29
2004.05.23
Подмена модулей