![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сортировка таблицы stringgrid [D6]
БурЖуй © (2003-01-29 23:43:00)Господа! Пишу:
min:=1;
for p:=1 to stringgrid1.RowCount do begin
for o:=p to stringgrid1.RowCount do
begin
if stringgrid1.Cells[i,min]>stringgrid1.Cells[i,o] then begin
m:=min;
stringgrid1.Rows[m].Move(m,o);
min:=o;
end;
end;
Когда вызываю stringgrid1.Rows[m].Move говорит "Cannot insert or delete rows from grid"
В чём трабл?
Заранее спасибо!
MBo (2003-01-30 06:34:00) [1]procedure SGExchangeRows(SG:TStringGrid; Row1,Row2:Integer);
var TempString: String;
begin
if (Row1 in [0..SG.RowCount-1]) and (Row2 in [0..SG.RowCount-1]) then begin
TempString:=SG.Rows[Row1].Text;
SG.Rows[Row1].Assign(SG.Rows[Row2]);
SG.Rows[Row2].Text:=TempString;
end;
end;
//сортировка по значениям колонки, заголовок которой был нажат
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Var ACol,ARow,i,j:Integer;
begin
with StringGrid1 do begin
MouseToCell(X,Y,ACol,ARow);
if (ARow=0) and (ACol>=FixedCols) then
for i:=FixedRows to RowCount-2 do
for j:=i+1 to RowCount-1 do
if Strtoint(Cells[ACol,i])>strtoint(Cells[ACol,j]) then
//в таблице были целые числа
SGExchangeRows(StringGrid1,i,j);
end;
end;
А (2003-01-30 05:01:00) [2]также Rows & Cols! Все с нуля и до Count-1.
uw (2003-01-30 01:23:00) [3]Cells индексируются с нуля.
БурЖуй (2003-01-29 23:57:00) [4]нет
Объясняю - i это колонка по какой я сортирую таблицу.
А метод которым я сортирую, если не ошиюаюсь называется пузырьковый.... протсо мне не понятно почему не работает встроеная функция stringgrid1.Rows[m].Move(m,o);.... и не понятно почемув параметрах нужно ставить текущий и следующее значение индекса, ведь текущее уже задано:.Rows[m].
BLooDMaN (2003-01-29 23:46:00) [5]может ты имел ввиду вот это:
min:=1;
for p:=1 to stringgrid1.RowCount do begin
for o:=p to stringgrid1. COLCOUNTdo
begin
if stringgrid1.Cells[i,min]>stringgrid1.Cells[i,o] then begin
m:=min;
stringgrid1.Rows[m].Move(m,o);
min:=o;
end;
end;