Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Наверно простой вопрос, но все-таки... [D6, Win2k]


Andrey-k ©   (2002-05-31 21:15:00) 

Как в StrigGride удалить строку? Использование других разновидностей гридов не приемлемо. Заранее спасибо.


Andrey-k   (2002-06-02 16:53:00) [1]

ха опять вижу ранее удаленные строки :)
Во блин, как прям с TXGrid-примером


Andrey-k   (2002-06-02 16:51:00) [2]

через жопу он работает ....
MouseWheelUp и MouseWheelDown прикол :) колесо крутит через 5 строк минимум! Как не стараюсь следующую не дает :))))
уже нервы .


Andrey-k   (2002-06-02 14:25:00) [3]

Я нашел AdvStringGrid - он работает! Но вот когда деньги придется платить? :)
Приложение с этим компонентом выростает до 800к, исходников нет.
Возможно придется все переделывать... а не хотелось бы :)

мастера, еще есть идеи - как побороть удаление в TStringGrid?


Agent Smith   (2002-06-02 14:06:00) [4]


> Похоже выход один - держать в гриде максимум 100 строк

Я так и сделал :)


Andrey-k   (2002-06-02 13:41:00) [5]

>Agent Smith

До этого уже MBo придлагал такой способ, только он копировал Assignoм Rows.

У меня 2000 строк и для удаления первой, 5 секунд ждать не приемлемо пока переприсвоится 2000-1 указателей!

Похоже выход один - держать в гриде максимум 100 строк


Anatoly Podgoretsky   (2002-06-02 09:25:00) [6]

Andrey-k © (02.06.02 01:33)
Как чего, раньше очистить ячейки, а потом удалять


Agent Smith   (2002-06-02 07:38:00) [7]


StringGrid1.Rows[StringGrid1.Row].Clear;
for i:=StringGrid1.Row+1 to N do
StringGrid1.Rows[i-1]:=StringGrid1.Rows[i];

Удаляем стороку, которая в данный момент находится в фокусе, затем сдвигаем все остальные строки, стоящие после нее.
N-номер послдней строки, не забудь, что считаем с нуля :)
В моей программе есть таблица на 100 строк, при нажатии не кнопку выделенная строка удаляется, а все последующие сдвигаются. Все прекрасно работает.


Andrey-k   (2002-06-02 01:42:00) [8]

а с удалением память приложение жрет


Andrey-k   (2002-06-02 01:33:00) [9]

Прикол!
если я хочу после удалений выполнить заполнение грида заново, то вижу ранее удаленные строки :)
т.е. из Rows они не убились!
хм как на ето повлиять?


Перед заполнением заново ставлю RowCount:=0, может ошибаюсь?
(может надо Rows чистить по другому, но память приложение не жрет, если не было удалений - значит это присвоение чистит лист Rows)


Andrey-k   (2002-05-31 23:18:00) [10]

Спасибо. это похоже то, что надо
приемлемо


With Form1.StringGrid1 do
Repeat
If (Cells[x,y]<>Str) then
TXGrid(Form1.StringGrid1).DeleteRow(i)
else
inc(i);
Until RowCount=i;


COOL!


MBo   (2002-05-31 22:57:00) [11]

>Andrey-k
type
TXGrid=class(TCustomGrid);
....
TXGrid(StringGrid1).DeleteRow(N);




Andrey-k   (2002-05-31 22:41:00) [12]

идея неплохая :)


Song   (2002-05-31 22:34:00) [13]

Сначала всё удалите что нужно, а сдвигать будете потом.
Кстати, чай если вкусный, тоже неплохо :)


Andrey-k   (2002-05-31 22:25:00) [14]

если уже 1000 строк, то приехали.
можно идти пить чай


Andrey-k   (2002-05-31 22:22:00) [15]

слушай, но медлено!


Andrey-k   (2002-05-31 22:02:00) [16]

спасибо


MBo   (2002-05-31 21:23:00) [17]

http://delphibase.endimus.com/?action=viewfunc&topic=vclctrl&index=2


Наверх

Титульная страница Поиск, карта сайта Написать письмо