- Строки и столбцы:
- StringGrid_AddRow — добавить пустую строку в TStringGrid;
- StringGrid_AddCol — добавить пустой столбец в TStringGrid;
- StringGrid_InsertRow — вставить пустую строку в TStringGrid в заданную позицию;
- StringGrid_InsertCol — вставить пустой столбец в TStringGrid в заданную позицию;
- StringGrid_DeleteRow — удалить заданную строку из TStringGrid;
- StringGrid_DeleteCol — удалить заданный столбец из TStringGrid;
- StringGrid_CopyFromRowToRow — скопировать одну строку в другую;
- StringGrid_CopyFromColToCol — скопировать один столбец в другой;
- StringGrid_MoveRow — переместить строку из одной позиции (по индексу) — в другую;
- StringGrid_MoveCol — переместить столбец из одной позиции (по индексу) — в другую;
- StringGrid_ChangeRow — поменять строки местами;
- StringGrid_ChangeCol — поменять столбцы местами;
См., также, текст всех функций (html-формат).
function StringGrid_AddRow(SG : TStringGrid; YesMoveCursor : boolean=true) : integer; //добавить пустую строку в TStringGrid //SG - переменная типа TStringGrid //YesMoveCursor - если =TRUE, то курсор перемещается на новую строку //Возвращаемое значение - кол-во строк в SG begin Result:=0; if SG<>NIL then begin SG.RowCount:=SG.RowCount+1; SG.Rows[SG.RowCount-1].Clear; if YesMoveCursor then SG.Row:=SG.RowCount-1; Result:=SG.RowCount; end; end;
function StringGrid_AddCol(SG : TStringGrid; YesMoveCursor : boolean) : integer; //добавить пустой столбец в TStringGrid //SG - переменная типа TStringGrid //YesMoveCursor - если =TRUE, то курсор перемещается на новый столбец //Возвращаемое значение - кол-во столбцов в SG begin Result:=0; if SG<>NIL then begin SG.ColCount:=SG.ColCount+1; SG.Cols[SG.ColCount-1].Clear; if YesMoveCursor then SG.Col:=SG.ColCount-1; Result:=SG.ColCount; end; end;
function StringGrid_InsertRow(SG : TStringGrid; ARow : integer) : boolean; //вставить пустую строку в TStringGrid в заданную позицию //SG - переменная типа TStringGrid //ARow - номер (индекс строки, начиная с нуля), после которой нужно вставить новую строку //Возвращаемое значение - результат операции Var i : integer; begin Result:=FALSE; if SG<>NIL then begin if ARow>=SG.FixedRows then begin if ARow<=(SG.RowCount-1) then begin SG.RowCount:=SG.RowCount+1; for i:=(SG.RowCount-1) downto (ARow+1) do begin SG.Rows[i].Assign(SG.Rows[i-1]); end; SG.Rows[ARow].Clear; Result:=TRUE; end; end; end; end;
function StringGrid_InsertCol(SG : TStringGrid; ACol : integer) : boolean; //вставить пустой столбец в TStringGrid в заданную позицию //SG - переменная типа TStringGrid //ACol - номер (индекс столбца, начиная с нуля), после которого нужно вставить новый столюец //Возвращаемое значение - результат операции Var i : integer; begin Result:=FALSE; if SG<>NIL then begin if ACol>=SG.FixedCols then begin if ACol<=(SG.ColCount-1) then begin SG.ColCount:=SG.ColCount+1; for i:=(SG.ColCount-1) downto (ACol+1) do begin SG.Cols[i].Assign(SG.Cols[i-1]); end; SG.Cols[ACol].Clear; Result:=TRUE; end; end; end; end;
function StringGrid_DeleteRow(SG : TStringGrid; ARow : integer) : boolean; //удалить заданную строку из TStringGrid //SG - переменная типа TStringGrid //ARow - номер (индекс строки, начиная с нуля), которую нужно удалить //Возвращаемое значение - результат операции Var N1,N2,i : integer; begin Result:=FALSE; if SG<>NIL then begin N1:=ARow; N2:=(SG.RowCount-2); if (SG.RowCount-1)>SG.FixedRows then begin for i:=N1 to N2 do begin SG.Rows[i].Assign(SG.Rows[i+1]); end; SG.Rows[SG.RowCount-1].Clear; SG.RowCount:=SG.RowCount-1; Result:=TRUE; end else begin SG.Rows[SG.FixedRows].Clear; Result:=TRUE; end; end; end;
function StringGrid_DeleteCol(SG : TStringGrid; ACol : integer) : boolean; //удалить заданный столбец из TStringGrid //SG - переменная типа TStringGrid //ACol - номер (индекс столбца, начиная с нуля), который нужно удалить //Возвращаемое значение - результат операции Var N1,N2,i : integer; begin Result:=FALSE; if SG<>NIL then begin N1:=ACol; N2:=(SG.ColCount-2); if (SG.ColCount-1)>SG.FixedCols then begin for i:=N1 to N2 do begin SG.Cols[i].Assign(SG.Cols[i+1]); end; SG.Cols[SG.ColCount-1].Clear; SG.ColCount:=SG.ColCount-1; Result:=TRUE; end else begin SG.Cols[SG.FixedCols].Clear; Result:=TRUE; end; end; end;
function StringGrid_CopyFromRowToRow(SG : TStringGrid; ARowFrom,ARowTo : integer) : boolean; //скопировать одну строку в другую //SG - переменная типа TStringGrid //ARowFrom - номер (индекс строки, начиная с нуля), которую нужно скопировать //ARowTo - номер (индекс строки, начиная с нуля), куда нужно скопировать //Возвращаемое значение - результат операции Var i : integer; begin Result:=FALSE; if SG<>NIL then begin if ARowFrom<>ARowTo then begin if ARowFrom>=0 then begin if ARowFrom<=(SG.RowCount-1) then begin if ARowTo>=0 then begin if ARowTo<=(SG.RowCount-1) then begin SG.Rows[ARowTo].Assign(SG.Rows[ARowFrom]); Result:=TRUE; end; end; end; end; end; end; end;
function StringGrid_CopyFromColToCol(SG : TStringGrid; AColFrom,AColTo : integer) : boolean; //скопировать один столбец в другой //SG - переменная типа TStringGrid //AColFrom - номер (индекс столбца, начиная с нуля), который нужно скопировать //AColTo - номер (индекс столбца, начиная с нуля), куда нужно скопировать //Возвращаемое значение - результат операции Var i : integer; begin Result:=FALSE; if SG<>NIL then begin if AColFrom<>AColTo then begin if AColFrom>=0 then begin if AColFrom<=(SG.ColCount-1) then begin if AColTo>=0 then begin if AColTo<=(SG.ColCount-1) then begin SG.Cols[AColTo].Assign(SG.Cols[AColFrom]); Result:=TRUE; end; end; end; end; end; end; end;
function StringGrid_MoveRow(SG : TStringGrid; ARowFrom,ARowTo : integer) : boolean; //переместить строку из одной позиции (по индексу) - другую //SG - переменная типа TStringGrid //ARowFrom - номер (индекс строки, начиная с нуля), которую нужно переместить //ARowTo - номер (индекс строки, начиная с нуля), куда нужно переместить //Возвращаемое значение - результат операции Var N : integer; begin Result:=FALSE; if SG<>NIL then begin if ARowFrom<>ARowTo then begin if ARowFrom>=SG.FixedRows then begin if ARowFrom<=(SG.RowCount-1) then begin if ARowTo>=SG.FixedRows then begin if ARowTo<=(SG.RowCount-1) then begin if StringGrid_InsertRow(SG, ARowTo) then begin N:=ARowFrom; if ARowFrom>ARowTo then N:=ARowFrom+1; if StringGrid_CopyFromRowToRow(SG, N, ARowTo) then begin if StringGrid_DeleteRow(SG, N) then begin Result:=TRUE; end; end; end; end; end; end; end; end; end; end;
function StringGrid_MoveCol(SG : TStringGrid; AColFrom,AColTo : integer) : boolean; //переместить столбец из одной позиции (по индексу) - другую //SG - переменная типа TStringGrid //AColFrom - номер (индекс столбца, начиная с нуля), который нужно переместить //AColTo - номер (индекс столбца, начиная с нуля), куда нужно переместить //Возвращаемое значение - результат операции Var N : integer; begin Result:=FALSE; if SG<>NIL then begin if AColFrom<>AColTo then begin if AColFrom>=SG.FixedCols then begin if AColFrom<=(SG.ColCount-1) then begin if AColTo>=SG.FixedCols then begin if AColTo<=(SG.ColCount-1) then begin if StringGrid_InsertCol(SG, AColTo) then begin N:=AColFrom; if AColFrom>AColTo then N:=AColFrom+1; if StringGrid_CopyFromColToCol(SG, N, AColTo) then begin if StringGrid_DeleteCol(SG, N) then begin Result:=TRUE; end; end; end; end; end; end; end; end; end; end;
function StringGrid_ChangeRow(SG : TStringGrid; ARow1,ARow2 : integer) : boolean; //поменять строки местами //SG - переменная типа TStringGrid //ARow1 и ARow1 - строки (их индексы, начиная с нуля), которые нужно поменять местами //Возвращаемое значение - результат операции begin Result:=FALSE; if SG<>NIL then begin if ARow1<>ARow2 then begin if ARow1>=SG.FixedRows then begin if ARow1<=(SG.RowCount-1) then begin if ARow2>=SG.FixedRows then begin if ARow2<=(SG.RowCount-1) then begin StringGrid_AddRow(SG,FALSE); if StringGrid_CopyFromRowToRow(SG, ARow1, SG.RowCount-1) then begin if StringGrid_CopyFromRowToRow(SG, ARow2, ARow1) then begin if StringGrid_CopyFromRowToRow(SG, SG.RowCount-1, ARow2) then begin SG.Rows[SG.RowCount-1].Clear; SG.RowCount:=SG.RowCount-1; Result:=TRUE; end; end; end; end; end; end; end; end; end; end;
function StringGrid_ChangeCol(SG : TStringGrid; ACol1,ACol2 : integer) : boolean; //поменять столбцы местами //SG - переменная типа TStringGrid //ACol1 и ACol2 - столбцы (их индексы, начиная с нуля), которые нужно поменять местами //Возвращаемое значение - результат операции begin Result:=FALSE; if SG<>NIL then begin if ACol1<>ACol2 then begin if ACol1>=SG.FixedCols then begin if ACol1<=(SG.ColCount-1) then begin if ACol2>=SG.FixedCols then begin if ACol2<=(SG.ColCount-1) then begin StringGrid_AddCol(SG,FALSE); if StringGrid_CopyFromColToCol(SG, ACol1, SG.ColCount-1) then begin if StringGrid_CopyFromColToCol(SG, ACol2, ACol1) then begin if StringGrid_CopyFromColToCol(SG, SG.ColCount-1, ACol2) then begin SG.Cols[SG.ColCount-1].Clear; SG.ColCount:=SG.ColCount-1; Result:=TRUE; end; end; end; end; end; end; end; end; end; end;
См., также, текст всех функций (html-формат).
Дата: 23.10.2022