Главная страница
    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.038 c
8-1148656880
F@R@_on
2006-05-26 19:21
2007.01.21
Рисование


1-1164375281
DelphiLexx
2006-11-24 16:34
2007.01.21
DBGridEh и OnEditButtonClick


8-1148574057
TRyaSS
2006-05-25 20:20
2007.01.21
Адаптивный метод Хаффмана. подскажите плз.


8-1148563758
MetalFan
2006-05-25 17:29
2007.01.21
Пережать видео...


8-1148549281
Belorus
2006-05-25 13:28
2007.01.21
Чтение текста голосом.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский