Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];

Вниз

сортировка 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.044 c
4-1165573534
Repavel
2006-12-08 13:25
2007.05.06
Как узнать хэндл активного окна


1-1173183579
Интересующийся
2007-03-06 15:19
2007.05.06
Минимизация формы


2-1176795142
webpauk
2007-04-17 11:32
2007.05.06
Загрузка из ftMemo в TStringList


2-1176878709
Gentos
2007-04-18 10:45
2007.05.06
bmp -> jpg


15-1175848083
Fredy314
2007-04-06 12:28
2007.05.06
Отправка E-mail через неблокирующие сокеты





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