Як видалити з StringGrid виділений рядок

Як видалити з StringGrid виділений рядок

Код взяв зі своєї програми-універсального довідника. Я робив так: 1-очистити цей рядок 2-зрушити всі нижченаведені рядки на одну позицію вгору 3-прибрати останній порожній рядок 4-в кінці завжди залишається один порожній рядок для внесення нового запису (у разі, якщо StringGrid використовується як таблиця, що редагується)

//Дивися як би "знизу вгору" Разом: 3 універсальні процедури

procedure Correct(frm, SG: TObject); var i,x,y:byte; begin з (frm as TForm) do with (SG as TStringGrid) do

for i:=(RowCount-1) downto 1 do

//перевіряємо наявність порожніх рядків між повними і видаляємо порожні рядки //шляхом "зсуву" нижніх рядків на позицію вгору

if (((Cells[0,i]<>"") and (Cells[0,i]<>" ")) and ((Cells[0,i-1] ="") or (Cells[0,i-1]=" "))) then begin для x:=i до (RowCount-1) do //цикл "зсуву" для y:=0 до (ColCount-1) до початку Cells[y,x-1]:=Cells[y,x]; Cells[y,x]:=""; end; end;

//додавання порожнього рядка ("знизу") при її відсутності для створення нового запису

if ((Cells[0,RowCount-1]<>"") and (Cells[0,RowCount-1]<>" ")) then RowCount:=RowCount+1;

//видалення зайвого порожнього рядка (за наявності 2-х і більше) наприкінці головної таблиці для економії місця - справа принципу! if RowCount>2 then begin if (((Cells[0,RowCount-1]="") or (Cells[0,RowCount-1]=" ")) and ((Cells[0,RowCount-2]="") або (Cells[0,RowCount-2]=" "))) then RowCount:=RowCount-1; end; end;

procedure DeleteNote(frm: TObject; SG: TObject); var i:byte; begin з (frm as TForm)do with (SG as TStringGrid) do begin для i:=0 до ColCount-1 до Cells[i,Row]:=" "; Correct((frm as TForm), (SG as TStringGrid)); end; end;

procedure TfrmMain.sgMainGridKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin

if (Key=vk_delete) then DeleteNote(frmMain, sgMainGrid);

1)delphibase.endimus.com розділ Управління компонентами

2) type TXGr >. TXGrid(StringGrid1).DeleteRow(2);