Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2010, 18:40   #1
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию Проблемка с сортировкой stringgrid

В этом кодике идет сортировка, но единственная проблема пустые строки он ставит в начале StringGrid, а нужно чтобы были в конце или вообще удалялись. как сделать?
Код:
procedure SortStringGrid(var GenStrGrid: TStringGrid; ThatCol: Integer);
 const
  TheSeparator = '@';
 var
   CountItem, I, J, K, ThePosition: integer;
   MyList: TStringList;
   MyString, TempString: string;
 begin
   CountItem := GenStrGrid.RowCount;
   MyList:= TStringList.Create;
   MyList.Sorted := False;
   try
     begin
       for I := 1 to (CountItem - 1) do
         MyList.Add(GenStrGrid.Rows[i].Strings[ThatCol] + TheSeparator +
           GenStrGrid.Rows[i].Text);
      Mylist.Sort;
       for K := 1 to Mylist.Count do
       begin
        MyString := MyList.Strings[(K - 1)];
        ThePosition := Pos(TheSeparator, MyString);
         TempString  := '';
         TempString := Copy(MyString, (ThePosition + 1), Length(MyString));
         MyList.Strings[(K - 1)] := '';
         MyList.Strings[(K - 1)] := TempString;
       end;
      for J := 1 to (CountItem - 1) do
         GenStrGrid.Rows[J].Text := MyList.Strings[(J - 1)];
     end;
   finally
    MyList.Free;
   end;
 end;
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 11.11.2010, 18:46   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Вот так можно удалить пустые строки:
Код:
type
 THackGrid = class(TStringGrid);

....

var
 row: integer;
begin
 for row:=0 to MainForm.StringGrid1.RowCount - 1 do
 begin
  if Trim(StringGrid1.Rows[row].Text) = '' then
     THackGrid(StringGrid1).DeleteRow(row);
 end;
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 11.11.2010, 19:06   #3
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

Теперь появилась проблема когда удаляется строка, прыгает в конец списка, нужно хотя бы на 1 строку больше...
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 11.11.2010, 19:41   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Не понял что-то...В смысле, что после удаления пустых строк нужно, чтобы добавлялась одна пустая строка? Тогда попробуйте так:
Код:
StringGrid1.RowCount:=StringGrid1.RowCount + 1;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 11.11.2010, 19:58   #5
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

нет, когда удаляешь например вначале стринггрида строку, выделяется последняя строка, а нужно чтобы выделялась следующая строка после той удаленной
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с сортировкой... DIzza Паскаль, Turbo Pascal, PascalABC.NET 3 16.06.2009 00:46
Помогите с сортировкой maxic Microsoft Office Excel 5 21.02.2009 17:47
Помогите с сортировкой в C++. Vollmond36 Помощь студентам 1 02.12.2008 23:06
Помогите с сортировкой AHTOXA Общие вопросы Delphi 2 08.06.2007 12:46
Помогите с сортировкой radist Паскаль, Turbo Pascal, PascalABC.NET 5 23.04.2007 12:50