Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление строк в TStringGrid, почему у TStringGrid нет такого метода 
:(
    Опции темы
programast
Дата 26.6.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Здрасти.

в drkb нашел удаление строки в гриде от Vit:

Type TFakeGrid=class(TCustomGrid); 

procedure TForm1.MyDelete(Sender: TObject); 
begin 
 TFakeGrid(Grid).DeleteRow(Grid.row);  
end;


но очень хочется знать... почему у TStringGrid нет собственного метода Delete как у TCustomGrid
для удаления строки?

з.ы. просто интерес разрывает в хлам... 
PM MAIL   Вверх
_hunter
Дата 26.6.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



потому как он там абсолютно не нужен 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
programast
Дата 26.6.2006, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Цитата(_hunter @ 26.6.2006,  18:20)
потому как он там абсолютно не нужен

почему не нужен этот метод?
я думаю, было бы логично если бы класс был самодостаточным: имел свои методы работы со своими данными... а так... не понимаю... 
PM MAIL   Вверх
Palladin
Дата 26.6.2006, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Потомучто это почти никому ненужно, если сильно нада то организуй работу так:
удаляеш все элементы из ненужной строки, а потом смещаеш элементы , в конце измениш размерность, уменьших строки или столбцы, в зависимости от того что тебе нужно! 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Yanis
Дата 26.6.2006, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(RooR @  26.6.2006,  19:58 Найти цитируемый пост)
если сильно нада то

то делай так как предложили Vit. 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
skyboy
Дата 26.6.2006, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



RooR, переброска элементов не самое лучшее решение. Тогда уж лучше использовать DrawGrid, а источником использовать массив указателей на строки. Не нужна строка - и без перебрасывания данных ра-а-а-аз! И вместо 2 строки - треьтья smile 
PM MAIL   Вверх
programast
Дата 27.6.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



ясно... спасибо =) 
PM MAIL   Вверх
programast
Дата 28.6.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



кстати, вот такой вопрос: если в гриде было допустим 10 строк, потом в рантайме количество строк уменьшить на сколько-нибудь... что станет с последними строчками, которые теперь не нужны?
они просто станут невидимыми или они уничтожатся? (с колонками по идее тоже самое должно быть)
Код

  Grid.RowCount := 10;
  Grid.RowCount := 7;
// что станет с последними тремя строками?

 
PM MAIL   Вверх
Palladin
Дата 28.6.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



ТОлько что проверил, они просто невидны, и если их не очищать то они будут храниться в стринггриде, проверено такой вот прогой, на форме два стринггрида и кнопка, плюс ещё два едита для размерности(не обязательны):

Код

procedure TForm1.Button2Click(Sender: TObject);
var
a:array[0..100,0..100]of integer;
i,j,n,m:integer;
begin

n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
 stringgrid1.RowCount:=3;
 stringgrid1.Colcount:=1;
   for i:=0 to n-1 do
     for j:=0 to m-1 do begin
        a[i,j]:=strtoint(stringgrid1.cells[i,j]);
      stringgrid2.Cells[i,j]:=inttostr(a[i,j]);
                         end;
   end;

end.


Добавлено @ 12:35 
Гриды по дефолту размерностью 3х3 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
programast
Дата 28.6.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



да, я тоже проверил... 
заполнил грид, потом уменьшил количество строк и прочитал значения невидимой строки... прочиталось
значит они просто становяятся невидимыми  =( 
PM MAIL   Вверх
Yanis
Дата 28.6.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(programast @  28.6.2006,  13:19 Найти цитируемый пост)
что станет с последними строчками, которые теперь не нужны?

Они остануться "где то там" smile Если действительно хочешь удалять строки, то используй метод Clear у TStrings. Например:
Код
// для полного удаления последней строки используй такой код
  StringGrid1.Rows[StringGrid1.RowCount-1].Clear;
  StringGrid1.RowCount := StringGrid1.RowCount - 1;
 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
programast
Дата 28.6.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Цитата(Yanis @ 28.6.2006,  13:33)
Цитата(programast @  28.6.2006,  13:19 Найти цитируемый пост)
что станет с последними строчками, которые теперь не нужны?

Они остануться "где то там" smile Если действительно хочешь удалять строки, то используй метод Clear у TStrings. Например:
Код
// для полного удаления последней строки используй такой код
  StringGrid1.Rows[StringGrid1.RowCount-1].Clear;
  StringGrid1.RowCount := StringGrid1.RowCount - 1;

так StringGrid1.Rows[StringGrid1.RowCount-1].Clear; он же вроде только "обнулит" значение, но не уничтожит саму строку =\
вобщем, буду удалять как предложил Vit... но не нравится мне что грид какой-то не доделаный в плане работы со строками и столбцами =) 
PM MAIL   Вверх
Palladin
Дата 28.6.2006, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Вот ты и займись доработкой гридаsmile))

А с другой стороны этот минус грида можно использовать для своих целей, может еомунить ненадо будет чтоб юзер видел что там за горизонтом... smile  


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
programast
Дата 28.6.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



да, наверное так и сделаю, что бы успокоиться =)) 
PM MAIL   Вверх
Palladin
Дата 28.6.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Сорри за флуд, но кто такой Vit, многие постоянно говорят что мол буду делать как сказал Vit а зачастую в данном топике даже нет ниодного поста от Vit, ответье кто это, чтоб здесь ещё больше не распростронять флуд, скиньте ктонить в личку smile  


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Демо
Дата 28.6.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50





--------------------
    
PM MAIL ICQ Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0650 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.