![]() |
TStringGrid
Снова я уважаемые:))
Как уничтожить ряд в СтрингГрид? я делал так: SG.Rows[i].Destroy --- SG.Rows[i].free не работает:( Помогите плз. |
Создай процедуру переноса данных из одной строки в другую. Потом перемещаешь все строки, расположенные ниже удаляемой на одну вверх, а последнюю обнули (очисти и т.п.)
|
Все, что приходит в голову, так это:
Через Cols[i].Move(удаляемый_ряд,последний_ряд) передвинуть весь ряд в конец и затем его грохнуть RowCount := RowCount-1; |
Во, разер, хорошая идея! Спасиб...
Яс, те тож :) |
не пашет идея :(
эксепшн вызывает |
код приведи
|
Cannot delete or insert rows from grid?:)
|
begin
SG.Cols[0].Move(1,SG.Rowcount); SG.Riwcount:=Sg.Rowcount-1 end; |
Да, есть такое дело . Я смотрю свойства Cols и Rows вообще в ReadOnly, что не делай - возникает ошибка . Ну что тут можно сказать, - компонент явно не рассчитан на такое . Я советую использовать TCustomizeTable .
|
Для справки Rows[0] является типом TStrings и содержит построчно значения колонок первой строки. Менять их местами путем Rows[0].Move никакого нет смысла (оно и не даст). Правильнее делать так:
//первый вариант begin // Последний элемент все же имеет индекс RowCount-1 SG.Rows[n]:=sg.Rows[sg.RowCount-1]; // n - номер удаляемого ряда SG.Rowcount:=Sg.Rowcount-1 end; Здесь ряд замещается последним. А если надо сдвинуть выше все записи то придется это делать вручную таким же образом: //второй вариант for i:=n to SG.RowCount-2 do SG.Rows[i]:=sg.Rows[i+1]; SG.Rowcount:=Sg.Rowcount-1 // n - номер удаляемого ряда |
Денвер, пасиб большое, немного доработал и все отлично пашет:)
|
| Часовой пояс GMT +4, время: 13:19. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.