Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.032 c
4-1157629234
apollon604
2006-09-07 15:40
2007.01.21
Переключение окон в панели задач


11-1144151482
BaryVetaL
2006-04-04 15:51
2007.01.21
Новый компонент BVLedNumber


2-1167894630
image
2007-01-04 10:10
2007.01.21
Уважаемые мастера, как сделать так, чтобы линия прилипала к компо


15-1166707484
Ega23
2006-12-21 16:24
2007.01.21
О пользе Архангельского :)))


3-1162387159
Layner
2006-11-01 16:19
2007.01.21
cannot sort a row of size 8086..




   Наверх