Перемещение строк, столбцов и ячеек
Пользователь может перемещать строки и колонки StringGrid при помощи мышки. Можно ли это сделать программно? В описании TCustomGrid можно увидеть методы MoveColumn и MoveRow, однако они скрыты в TStringGrid. Но нам ничего не мешает просабклассить TStringGrid и объявить эти методы как public:
- Подробности
- Родительская категория: StringGrid
- Категория: Перемещение строк, столбцов и ячеек
Code: |
{ **** UBPFD *********** **** >> Обмен строк StringGrid Обмен содержимого указанных строк StringGrid. Варианты без копирования связанных с ячейками объектов и вместе с ними. Зависимости: Grids Автор: Борис Новгородов (MBo), Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., Новосибирск Copyright: MBo ***************************************************** } 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 SGExchRowsWithObj(SG: TStringGrid; Row1, Row2: Integer); var TempList: TStringList; begin with SG do if (Row1 in [0..RowCount - 1]) and (Row2 in [0..RowCount - 1]) then begin TempList := TStringList.Create; TempList.Assign(Rows[Row1]); Rows[Row1].Assign(Rows[Row2]); Rows[Row2].Assign(TempList); TempList.Free; end; end; |
- Подробности
- Родительская категория: StringGrid
- Категория: Перемещение строк, столбцов и ячеек
Code: |
{ The user can move rows and columns of a StringGrid with the mouse. Can it also be done by code? In the help for TCustomGrid you can see the methods MoveColumn and MoveRow, but they are hidden in TStringGrid. We can make them accessible again by subclassing TStringGrid and declaring these methods as public: }
type TStringGridHack = class(TStringGrid) public procedure MoveColumn(FromIndex, ToIndex: Longint); procedure MoveRow(FromIndex, ToIndex: Longint); end;
{ The implementation of these methods simply consists of invoking the corresponding method of the ancestor: }
procedure TStringGridHack.MoveColumn(FromIndex, ToIndex: Integer); begin inherited; end;
procedure TStringGridHack.MoveRow(FromIndex, ToIndex: Integer); begin inherited; end;
// Example, Beispiel:
procedure TForm1.Button1Click(Sender: TObject); begin TStringGridHack(StringGrid1).MoveColumn(1, 3); end;
|
- Подробности
- Родительская категория: StringGrid
- Категория: Перемещение строк, столбцов и ячеек