Главная страница
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.03 c
1-1083844495
Nikolai_S
2004-05-06 15:54
2004.05.23
Подскажите где взять какой-нибудь продвинутый StringGrid


7-1081868399
RyDmi
2004-04-13 18:59
2004.05.23
Работа с LPT


1-1084055739
Box
2004-05-09 02:35
2004.05.23
Компонент ListView


14-1083772753
Thor
2004-05-05 19:59
2004.05.23
Посещаете ли вы фитнес-клубы, качалки, спортзалы, etc.?


6-1081239426
Kremen
2004-04-06 12:17
2004.05.23
Как узнать, занят порт какой-либо программой или нет?