Текущий архив: 2002.08.29;
Скачать: CL | DM;
ВнизЛюди, спасайте!!! Уже который день мучаюсь... Найти похожие ветки
← →
[BAD]Angel (2002-08-17 12:45) [0]Уважаемые мастера! У меня такой вопрос.
Как из этого дурацкого 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 13:13) [1]Мастера? где же Вы?
← →
sudiv (2002-08-17 13:27) [2]Когда-то делал я нечто подобное, НО
я проверял на "" все ячейки этой последней удаляемой строки, или первой как кому нравится и не делал RowCount:=RowCount-1; а просто очищал эти ячейки если они не "".
При добавлении аналогичная проверка.
Сейчас код найти не могу, на чужой машине сижу, но получалось так же как в DBGrid один в один.
Может не понял вопроса?
← →
[BAD]Angel (2002-08-17 13:56) [3]Вопрос понял! Ладно, попробую! Но если есть другие варианты, то скажу спасибо огромное!!!
← →
[BAD]Angel (2002-08-17 14:32) [4]Больше нет предложений? (Жаль)
← →
777 (2002-08-17 14:47) [5]Используй DrawGrid.
← →
[BAD]Angel (2002-08-17 14:49) [6]А как? я начинающий! Если можно подробнее...
← →
777 (2002-08-17 15:33) [7]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(индекс_строки);
...........
← →
Man-In-Red (2002-08-17 15:40) [8]
> [BAD]Angel © (17.08.02 12:45)
> Вот я написал код
> Во написал, сам, чуть не запутался! ;-)
Говоришь сам написал? А может это код MBo:
http://delphibase.endimus.com/?action=viewfunc&topic=vclctrl&id=10142
???
Совпадает что-то!
← →
[BAD]Angel (2002-08-17 15:46) [9]777 - Спасибо!
Man-In-Red - я знаю что совпадает... Код не я написал... А тебе вопрос читать надо внимательнее! :-(
Страницы: 1 вся ветка
Текущий архив: 2002.08.29;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.006 c