Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
Вниз
Удалить строку или столбец из TStringGrid Найти похожие ветки
← →
DDDeN (2007-10-24 10:07) [0]Собственно сабж. Как я понял, в данном компоненте отсутствуют встроенные методы реализации удаления определенной строки или столбца. В таблице присутствуют зафиксированный столбец и строка и примерно около 3000 строк с информацией.
← →
megabyte © (2007-10-24 11:09) [1]Удалить данные из столбца/строки или сам/саму столбец/строку?
← →
DDDeN (2007-10-24 11:15) [2]Надо удалить строку/столбец с данными.
← →
Palladin © (2007-10-24 11:18) [3]То есть если они будут без данных, то удалять не надо? :)
← →
DDDeN (2007-10-24 11:20) [4]Надо :-)
Есть куча строк, скажем, около 3 тысяч. И столбцов около пятидесяти. Надо удалить определенную строку или столбец.
← →
Jeer © (2007-10-24 11:26) [5]в цикле
*.Rows[i].Assign(Rows[i+1]);
затем
*.RowCount:= RowCount-1;
аналогично для Cols
← →
DDDeN (2007-10-24 11:52) [6]Готово! Всем спасибо :-)
procedure TMainForm.DeleteButtonClick(Sender: TObject);
var
i, j: Integer;
begin
j := Grid.Row;
Grid.Rows[j].Clear;
for i := j to Grid.RowCount - 2 do
Grid.Rows[i].Assign(Grid.Rows[i + 1]);
Grid.RowCount := Grid.RowCount - 1;
end;
Надо бы еще проверить на то, что мы не удаляем зафиксированную строку или столбец.
← →
Jeer © (2007-10-24 12:26) [7]
> Grid.Rows[j].Clear;
Лишнее.
← →
Германн © (2007-10-24 13:50) [8]
> Jeer © (24.10.07 11:26) [5]
А процедуру MoveRow почему бы не использовать?
← →
Jeer © (2007-10-24 14:09) [9]
> Jeer © (24.10.07 12:26) [7]
А это домашнее задание от тебя:))
Я предпочитаю, чтобы сначала на простом они поняли, а потом можно уже пользовать классом TBuhgalteria.
← →
DDDeN (2007-10-24 17:08) [10]Эти методы есть только у предка TStringGrid.
← →
Германн © (2007-10-24 20:10) [11]
> DDDeN (24.10.07 17:08) [10]
>
> Эти методы есть только у предка TStringGrid.
>
Раз у предка есть, значит и у потомка тоже. А доступ к секции protected получается на раз-два. :-)
← →
DDDeN (2007-10-25 06:36) [12]Нашел информацию. Методы MoveColumn и MoveRow имеются у TCustomGrid. Чтобы воспользоваться этими методами достаточно сделать следующее:
Объявим их как public
type
TStringGridX = class (TStringGrid)
public
procedure MoveColumn(FromIndex, ToIndex: Longint);
procedure MoveRow(FromIndex, ToIndex: Longint);
end;
И вызываем метод предка:
procedure TStringGridX.MoveColumn(FromIndex, ToIndex: Integer);
begin
inherited;
end;
procedure TStringGridX.MoveRow(FromIndex, ToIndex: Integer);
begin
inherited;
end;
Все! Можно юзать :-)
procedure TForm1.Button1Click(Sender: TObject);
begin
TStringGridX(StringGrid1).MoveColumn(1, 3);
end;
← →
Германн © (2007-10-25 13:09) [13]
> DDDeN (25.10.07 06:36) [12]
>
> Нашел информацию. Методы MoveColumn и MoveRow имеются у
> TCustomGrid. Чтобы воспользоваться этими методами достаточно
> сделать следующее:
>
Это намного больше чем достаточно, многое в приведенном коде совсем не нужно. Я ж сказал
> на раз-два
т.е. всего две строчки.
С домашним заданием справился, но пока коряво. :(
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c