Как да премахнете избран ред от StringGrid
Как да премахнете избран ред от StringGrid
Взех кода от моята универсална референтна програма. Направих това: 1-изчистете този ред 2-преместете всички следващи редове с една позиция нагоре 3-премахнете последния празен ред 4-винаги има един празен ред в края, за да направите нов запис (в случай че StringGrid се използва като редактируема таблица)
//Погледнете сякаш "отдолу нагоре" //Общо: 3 универсални процедури
процедура Correct(frm, SG : TObject); вар. i,x,y:байт; започнете с (frm като TForm) направете с (SG като TStringGrid) направете
for i:=(RowCount-1) downto 1 do
//проверява за празни редове между пълните редове и изтрива празните редове //чрез "преместване" на долните редове с една позиция нагоре
ако (((Cells[0,i]<>"") и (Cells[0,i]<>" ")) и ((Cells[0,i-1]="") или (Cells[0,i-1]=" "))) тогава започнете за x:=i към (RowCount-1) направете // цикъл "shift" for y:=0 to (ColCount-1) do begin Cells[y,x-1]:=Cells[y,x]; Клетки [y,x]:=""; край; край;
//добавяне на празен ред ("отдолу"), ако не съществува за създаване на нов запис
if ((Cells[0,RowCount-1]<>"") и (Cells[0,RowCount-1]<>" ")) тогава RowCount:=RowCount+1;
//изтриване на допълнителен празен ред (ако има 2 или повече) в края на основната //таблица за спестяване на място - въпрос на принцип! ако RowCount>2 тогава започнете if (((Cells[0,RowCount-1]="") или (Cells[0,RowCount-1]=" ")) и ((Cells[0,RowCount-2]="") или (Cells[0,RowCount-2]=" "))) тогава RowCount:=RowCount-1; край; край;
процедура DeleteNote(frm : TObject; SG : TObject); var i:byte; започнете с (frm като TForm)направете с (SG като TStringGrid) направете започнете за i:=0 до ColCount-1 направете Cells[i,Row]:=""; Правилно((frm като TForm), (SG като TStringGrid)); край; край;
procedure TfrmMain.sgMainGridKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); започнете
if (Key=vk_delete) then DeleteNote(frmMain, sgMainGrid);
1)delphibase.endimus.com Секция за управление на компоненти
2) тип TXGr >. TXGrid(StringGrid1).DeleteRow(2);