Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: 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 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
2-1193297234
em240
2007-10-25 11:27
2007.11.18
CheckListBox+IndexOfObject


2-1193340284
Ega23
2007-10-25 23:24
2007.11.18
подскажите пример работы с TXMLDocument


2-1193036085
engine
2007-10-22 10:54
2007.11.18
Проверьте на глючность


2-1193311457
Новичек
2007-10-25 15:24
2007.11.18
Telnet через socket.


15-1192360733
Вопрошающий
2007-10-14 15:18
2007.11.18
Что вы знаете об узбекской культуре?