![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Люди, спасайте!!! Уже который день мучаюсь... [D5, Win95/98, WinME]
[BAD]Angel © (2002-08-17 12:45:00)Уважаемые мастера! У меня такой вопрос.
Как из этого дурацкого string grid"a удалить выделенную строку со сдвигом вверх всего, что находиться после этой строчки???
Вот я написал код, но...
Есть одна трабла: а и менно, когда в гриде остается последняя запись (тобишь ничего нет, кроме одной (первой) строчки) он, гад, удаляет ее + fixedrow. И получается какая-то фигня... Там, где должны находиться заголовки колонок пропадает сам fixedrow, а названия остаються...
Во написал, сам, чуть не запутался! ;-)
Как быть? ПОМОГИТЕ ПЛЗ!!!
procedure SGDeleteRow(SG: TStringGrid; RowToDelete: Integer);
var
i: Byte;
begin
with SG do begin
if (RowToDelete>=1) and (RowToDelete<RowCount) then begin
for i:=RowToDelete to RowCount-2 do
Rows[i].Assign(Rows[i+1]);
RowCount:=RowCount-1;
end;
end;
end;
[BAD]Angel (2002-08-17 15:46:00) [1]777 - Спасибо!
Man-In-Red - я знаю что совпадает... Код не я написал... А тебе вопрос читать надо внимательнее! :-(
Man-In-Red (2002-08-17 15:40:00) [2]
> [BAD]Angel © (17.08.02 12:45)
> Вот я написал код
> Во написал, сам, чуть не запутался! ;-)
Говоришь сам написал? А может это код MBo:
http://delphibase.endimus.com/?action=viewfunc&topic=vclctrl&id=10142
???
Совпадает что-то!
777 (2002-08-17 15:33:00) [3]DrawGrid -> OnDrawDataCell.
Значения ячеек надо держать в массиве (напр. TStrings)
И для удаления достаточно Tstrings.Delete(index):
var Arr:array[0..DrawGrid1.ColCount]of Tstrings;
.........
инициализируем массив, заполняем его
.........
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with DrawGrid1.Canvas do
begin
.....
TextOut(Rect.Left+2,Rect.Top+2, Arr[ACol][Arow]); //заносим
данные из массива
.........
end;
end;
для удаления:
...........
DrawGrid1.RowCount:=DrawGrid1.RowCount-1;
For i:=0 to DrawGrid1.ColCount do Arr[i].Delete(индекс_строки);
...........
[BAD]Angel (2002-08-17 14:49:00) [4]А как? я начинающий! Если можно подробнее...
777 (2002-08-17 14:47:00) [5]Используй DrawGrid.
[BAD]Angel (2002-08-17 14:32:00) [6]Больше нет предложений? (Жаль)
[BAD]Angel (2002-08-17 13:56:00) [7]Вопрос понял! Ладно, попробую! Но если есть другие варианты, то скажу спасибо огромное!!!
sudiv (2002-08-17 13:27:00) [8]Когда-то делал я нечто подобное, НО
я проверял на "" все ячейки этой последней удаляемой строки, или первой как кому нравится и не делал RowCount:=RowCount-1; а просто очищал эти ячейки если они не "".
При добавлении аналогичная проверка.
Сейчас код найти не могу, на чужой машине сижу, но получалось так же как в DBGrid один в один.
Может не понял вопроса?
[BAD]Angel (2002-08-17 13:13:00) [9]Мастера? где же Вы?