Форум: "Основная";
Текущий архив: 2002.07.18;
Скачать: [xml.tar.bz2];
ВнизКак удалить из StringGrid выделенную строку Найти похожие ветки
← →
Lin Grey (2002-07-06 19:41) [0]Как удалить из StringGrid выделенную строку
← →
^Sanya (2002-07-06 20:56) [1]Код взял из своей программы- универсального справочника.
Я делал так:
1-очистить данную строку
2-сдвинуть все нижеследующие строки на одну позицию вверх
3-убрать последнюю пустую строку
4-в конце всегда остаётся одна пустая строка для внесения новой записи (в случае, если StringGrid используется как редактируемая таблица)
//Смотри как бы "снизу вверх"
//Итого: 3 универсальные процедуры
procedure Correct(frm, SG : TObject);
var
i,x,y:byte;
begin
with (frm as TForm) do with (SG as TStringGrid) do
begin
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
for x:=i to (RowCount-1) do //цикл "сдвига"
for y:=0 to (ColCount-1) do begin
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]="") or (Cells[0,RowCount-2]=" ")))
then RowCount:=RowCount-1;
end;
end;
end;
procedure DeleteNote(frm : TObject; SG : TObject);
var
i:byte;
begin
with (frm as TForm)do with (SG as TStringGrid) do
begin
for i:=0 to ColCount-1 do
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);
end;
← →
MBo (2002-07-06 21:48) [2]1)delphibase.endimus.com
раздел Управление компонентами
2)
type
TXGrid=class(TStringGrid);
...
TXGrid(StringGrid1).DeleteRow(2);
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c