IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> StringGrid сортировка, по строкам
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Мужской
Реальное имя: Влад

Репутация: -  0  +


var
Form1: TForm1;
i,j:integer;
implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
with StringGrid1 do
for i:=0 to ColCount -1 do
for j:=0 to RowCount -1 do
cells[i,j]:=inttostr(random(50)+1);
end;

procedure TForm1.Button2Click(Sender: TObject);
var temp:integer;
begin
with StringGrid1 do
for i:=1 to ColCount -1 do
for j:=0 to RowCount -1 do
if StrToInt(cells[i,j])>StrToInt(cells[i-1,j]) then
begin
temp:=StrToInt(cells[i-1,j]);
cells[i-1,j]:=cells[i,j];
cells[i,j]:=IntToStr(temp);
end;
end;

begin
randomize;
end.



Код для стрингрида и двух кнопок. Первая формирует, вторая сортирует по убыванию

Помогите плиз:
1.сортировка происходит с шагом на одну клетку, как сделать что бы они выстроились в нужную последовательность после 1 нажатия?
2. нужно сосчитать сумму чисел в строке и выстроить строки по возрастанию этого самого числа
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






А в ответ - тишина unsure.gif

С использованием минимальных возможностей Дельфи сортировка элементов строк Grid-а по убыванию пишется так:
function mySort(List: TStringList; first, second: Integer): Integer; // это функция сортировки
function f(index: integer): integer;
begin result := StrToInt(List.Strings[index]) end;
begin
result := f(second) - f(first)
end;

procedure TForm1.Button12Click(Sender: TObject);
var
ts: TStringList;
i: integer;
begin
ts := TStringList.Create;
try
with StringGrid1 do
begin
for i := 0 to RowCount - 1 do
begin
ts.Assign(Rows[i]); // Получаем элементы очередной строки
ts.CustomSort(mySort); // сортируем их как числа по убыванию
Rows[i].Assign(ts); // возвращаем назад в Грид
end;
end;
finally
ts.Free;
end;
end;
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.05.2024 18:24
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name