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

Вниз

сортировка StringGrid (число или текст)   Найти похожие ветки 

 
Roman_S ©   (2007-04-18 22:02) [0]

Вот код, которым я сортирую StringGrid.
С текстовыми колонками всё срабатывает прекрасно… но с числовыми:
0 >> 1000 >> 358 >> 42
Какие изменения необходимо внести в код, чтобы (в зависимости от того – «числовая» колонка, или «текстовая») происходила сортировка по первым символам или по <> значению?
procedure SortGrid(SG: TStringGrid; Column: Integer; SortMode: sgSmData; StartWithin: Integer=0);
var MinRowId, RowId1, RowId2, ColId: Integer;
   Temp1, Temp2: string;

function GetLongHintTrim(Str: String): String;
begin
 Result := TriM(GetLongHint(Str));
end;

begin
for RowId1 := StartWithin to SG.RowCount - 2 do
 begin
  Temp1 := GetLongHintTrim(SG.Cells[Column , RowId1]);
  MinRowId := RowId1;
  for RowId2 := RowId1 + 1 to SG.RowCount - 1 do
   begin
    Temp2 := Getlonghinttrim(SG.Cells[Column, RowId2]);
    if (SortMode=stUp) then
    if Temp2 < Temp1 then begin
      Temp1 := getlonghinttrim(SG.Cells[Column, RowId2]);
      MinRowId := RowId2;
    end;
    if (SortMode=stDown) then
    if Temp2 > Temp1 then begin
      Temp1 := getlonghinttrim(SG.Cells[Column, RowId2]);
      MinRowId := RowId2;
    end;
 end;
  for ColId := 1 to SG.ColCount - 1 do
   begin
    Temp2 := SG.Cells[ColId, RowId1];
    SG.Cells[ColId, RowId1] := SG.Cells[ColId, MinRowId];
    SG.Cells[ColId, MinRowId] := Temp2;
   end;
 end;
end;


 
Virgo_Style ©   (2007-04-18 22:05) [1]

по всей видимости, надо сравнивать не строки, а числа, если колонка числовая.


 
Roman_S ©   (2007-04-18 22:10) [2]

1. Не хотелось бы загромождать программу лишним кодом (следовательно, модернизировать имеющийся)
2. Попытки найти в Интернете понятный для новичка (как, например, вышеописанный) код сортировки StringGrid по конкретной "числовой" колонке, по возрастанию и убыванию, не увенчались успехом


 
Virgo_Style ©   (2007-04-18 22:31) [3]

где сравнение, видишь? Там строки сравниваются. Если же колонка числовая, то строки надо перевести в числа и сравнить их.



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

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

Наверх




Память: 0.47 MB
Время: 0.022 c
2-1176707699
Kolan
2007-04-16 11:14
2007.05.06
Мне нужен GUID в виде числа, как опьсать?


15-1175764676
Ricks
2007-04-05 13:17
2007.05.06
Редактор значков (ico)


2-1176716456
doob
2007-04-16 13:40
2007.05.06
ShowModal


1-1172751096
infom
2007-03-01 15:11
2007.05.06
Приложение для двух мониторов...


2-1176458606
allucard
2007-04-13 14:03
2007.05.06
Ошибка: Type TRec needs finalization - not allowed in file type