Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.046 c
15-1167233690
StriderMan
2006-12-27 18:34
2007.01.21
Женские духи


15-1167205213
zdm
2006-12-27 10:40
2007.01.21
Творческий кризис


2-1167341279
Vladimir1984
2006-12-29 00:27
2007.01.21
Как присвоить цвету текст(цифровое значение)...


9-1142551010
KiberKot
2006-03-17 02:16
2007.01.21
Поделитесь опытом


2-1167830625
Digest
2007-01-03 16:23
2007.01.21
MySQL запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский