Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

Stringgrid и Range   Найти похожие ветки 

 
Igor_Zal   (2006-11-30 02:23) [0]

Доброй ночи.
Уважаемые мастера, вот мучаю кусок кода,
связанный с StringGrid.
Подскажите, как убрать жирные линии внутри диапазона,
когда выдяешь более 1 ячейки.оставляя жирные линии по краям всего диапазона.
Когда выделил, изменяешь размеры Col or Rowб или
кликаешь по окну с программой, все получается как надо.
Помогите исправить.
Заранее спасибо.

procedure TForm1.sgDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
const
  WidthCellBorder = 3;
var
Clean:TRect;
begin
  with sg.Canvas do
     begin
        if gdFocused in State then
           begin
              Brush.Color:=clblack;
              FillRect(Rect);
              Brush.Color:=clwindow;
              Pen.Width:=WidthCellBorder;
              pen.Color:=clblack;
              Rectangle(Rect.Left-1+WidthCellBorder-1,rect.Top-1+WidthCellBorder,Rect.Right-WidthCellBorder+2,Rect.Bottom-WidthCellBorder+1);
              Brush.Color:=clWindow;
              Pen.Color:=clSilver;
           end else
           begin
              if gdSelected in State then
                 begin
                    Brush.Color:=clinfobk;
                    FillRect(Rect);
                    Clean.Left:=sg.CellRect(sg.Selection.Left,sg.Selection.Top).Left;
                    Clean.Right:=sg.CellRect(sg.Selection.Right,sg.Selection.Top).Right;
                    Clean.Top:=sg.CellRect(sg.Selection.Left,sg.Selection.Top).Top;
                    Clean.Bottom:=sg.CellRect(sg.Selection.Left,sg.Selection.Bottom).Bottom;
                    Brush.Style := bsClear;
                    pen.Color:=clblack;
                    pen.Width:=WidthCellBorder;
                    Rectangle(Clean);
                    pen.Color:=clSilver;
                    Brush.Color:=clWindow;
//с этии прорисовывется, но сильно мерцает
                    //InvalidateRect(sg.Handle,nil,false);
                   end;
           end;
     end;
end;


 
ЮЮ ©   (2006-11-30 03:53) [1]


> когда выдяешь более 1 ячейки.оставляя жирные линии по краям
> всего диапазона.
> Когда выделил, изменяешь размеры Col or Rowб или
> кликаешь по окну с программой, все получается как надо.


А когда не так как надо?

//с этии прорисовывется, но сильно мерцает
                   //InvalidateRect(sg.Handle,nil,false);


А почему не sq.Invalidate; ? + DoubleBuffered := true для Parent-а грида


 
Igor_Zal   (2006-11-30 08:35) [2]

Спасибо, сильно выручил.
Просто ночь была, не подумал.



Страницы: 1 вся ветка

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.081 c
5-1147098886
Dstr
2006-05-08 18:34
2007.01.21
RichWiev


2-1166453234
Chuk & Gek
2006-12-18 17:47
2007.01.21
запуск только одной копии приложения


2-1167867933
Riply
2007-01-04 02:45
2007.01.21
Ожидание начала работы нити.


1-1164200781
*Ray*
2006-11-22 16:06
2007.01.21
MultiSelect в DBGrid


15-1167477570
Kerk
2006-12-30 14:19
2007.01.21
Mouse Nightshirt