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

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

Люди, спасайте!!! Уже который день мучаюсь... [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]

Мастера? где же Вы?


Наверх

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