Вниз
Скачать: CL | DM;

Удалить строку или столбец из 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.015 c
15-1192614681
исследователь
2007-10-17 13:51
2007.11.18
проблема с событием onSubmit


15-1191664691
Tack
2007-10-06 13:58
2007.11.18
Есть редактор RTF с параллельным редактированием тегов?


3-1183714878
Xmen
2007-07-06 13:41
2007.11.18
Delphi+FireBird и Диалект


2-1192649516
timekiller
2007-10-17 23:31
2007.11.18
XML! Намекните!


15-1192531815
ZeroDivide
2007-10-16 14:50
2007.11.18
Кстати, тоже вопрос по русскому :)




   Наверх