Главная страница
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.041 c
1-1164886595
CaSH_
2006-11-30 14:36
2007.01.21
TreeView при выделении строки иконка меняется (продолжение)


15-1167220321
kroner
2006-12-27 14:52
2007.01.21
Регулярное выражение


11-1144951991
Snipet
2006-04-13 22:13
2007.01.21
Перетаскивание итемов в ListView


4-1157590421
AleKo
2006-09-07 04:53
2007.01.21
CyptoAPI


3-1162197950
Alexey123
2006-10-30 11:45
2007.01.21
Обработка ошибок MS SQL