Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.016 c
4-96018
z0ne
2002-06-26 12:42
2002.08.29
Проблема с BeginPath


1-95757
greenrul
2002-08-16 17:41
2002.08.29
Рисунок на канве не обновляется


1-95800
Butcher
2002-08-20 01:35
2002.08.29
TCanvas.RecText (Текст прижать к правом краю)


4-96038
v0id
2002-06-23 08:57
2002.08.29
Как получить название функции, зная хендл, полученный от нее?


3-95718
ZDN
2002-08-09 12:48
2002.08.29
Перевод БД из под Progress на Interbase