2015-01-23 3 views
-1

Я только что закончил переход с D7 на XE2, и я заметил, что сетки по умолчанию очень слабы (это не помогает мне настроить контраст на моем мониторе на высокий уровень), как вы можете видеть на скриншоте ниже:Как изменить цвет линий сетки TStringGrid?

Default TStringGrid grid-lines

Это была моя попытка повторно цвет линии темнее, установив TStringGrid «s OnDrawCell событие:

procedure TfrmBaseRamEditor.DrawStrGrid(Sender: TObject; ACol, ARow: Integer; 
             Rect: TRect; State: TGridDrawState); 
begin 
    sgrSenden.Canvas.Pen.Color := clDkGray; 
    // "Set the Style property to bsClear to eliminate flicker when the object 
    // repaints" (I don't know if this helps). 
    sgrSenden.Canvas.Brush.Style := bsClear; 
    // Draw a line from the cell's top-right to its bottom-right: 
    sgrSenden.Canvas.MoveTo(Rect.Right, Rect.Top); 
    sgrSenden.Canvas.LineTo(Rect.Right, Rect.Bottom); 
    // Make the horizontal line. 
    sgrSenden.Canvas.LineTo(Rect.Left, Rect.Bottom); 
    // The other vertical line. 
    sgrSenden.Canvas.LineTo(Rect.Left, Rect.Top); 
end; 

Но это дает результат еще менее желательно, обратите внимание, особенно на границу активной ячейки:

attempt to modify gridlines

Есть ли способ, чтобы сделать эти сетки линий темнее или толще таким образом, чтобы не выглядеть некрасиво, как моя попытка?

+0

Точный дубликат [Delphi XE3, уродливые границы StringGrid] (http://stackoverflow.com/questions/12996363/delphi-xe3-ugly-stringgrids-borders) –

+0

@JerryDodge I Googled в течение часа и не смог найти Это. Этот вопрос описан и сформулирован плохо; * границы * StringGrid отличаются от границ ячейки, о чем действительно спрашивал связанный вопросник. Мне нечего больше выиграть от этого вопроса, но оставить его здесь будет служить будущим гуглерам. – DBedrenko

+0

К сожалению, это не изменяет правила переполнения стека. Вопрос и ответ, которые вы отправили, уже здесь. Если вы думаете, что они плохо сформулированы, вы можете увидеть, как вы можете улучшить существующие. –

ответ

0

В соответствии с ответом на вопрос this, я просто задал имущество TStringGrid по gdsClassic.

-2

Я также хотел использовать другой цвет на линиях сетки (однако, в Delphi 6). К сожалению, цвет линий не может быть задан индивидуально. Я исследовал обработку TStringGrid (Grid.pas) блок и обнаружил, что Delphi устанавливает цвет линии для clSilver с выражением в процедуре TCustomGrid.Paint:

LineColor := clSilver; 

Если цвет фона уже есть clSilver, то LineColor установлен в clGray.

Я не понимаю, почему они не реализовали свойство для цвета линии сетки.

+1

Это не ответ, пожалуйста, разместите его как отдельный вопрос. –

Смежные вопросы