StringGrid i GridLineWidth

Odpowiedz Nowy wątek
2009-10-01 15:23
crisper86
0

Witam
Mam taki problem rysuje w StringGrid skalę w następujący sposób:

procedure TMain.StringGrid4DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
  begin

StringGrid4.Canvas.Pen.Color:=clRed;
StringGrid4.Canvas.Pen.Width:=1;
if ((ARow=1) and (ACol mod 10 = 0)) then
 begin
 StringGrid4.Canvas.MoveTo(Rect.Right,Rect.Top);
 StringGrid4.Canvas.LineTo(Rect.Right,Rect.Bottom);
 end;

if ((ARow=1) and (not (ACol mod 10 = 0))) then 
 begin
 StringGrid4.Canvas.MoveTo(Rect.Right,Rect.Top);
 StringGrid4.Canvas.LineTo(Rect.Right,(2 * Rect.Top -(Rect.Top div 2)));
 end;

 end;

Jednak jeśli ustawię parametr GridLineWidth na wartosc 0 to nic mi się nie rysuje.
Natomiast jeśli na stringgrid z ustawionym GridLineWidth na 0 przy pomocy przycisku do którego przypisane są polecenia:

 StringGrid4.Canvas.MoveTo(Rect.Right,Rect.Top);
 StringGrid4.Canvas.LineTo(Rect.Right,(2 * Rect.Top -(Rect.Top div 2)));

linia rysuje się bez problemu.

Proszę o rade co zrobić żeby przy zdarzeniu OnDrawCell i parametrze GridLineWidth = 0 wszystko rysowało się poprawnie. Albo o zasugerowanie jakiego innego rozwiązania.

Pozostało 580 znaków

2009-10-04 11:56
0

Hmm, a po co Ci GridLineWidth = 0 ? W Options możesz sobie wyłączyć pionowe lub poziome linie siatki. Co do samego rysowania wygląda OK. Ja zazwyczaj jeszcze daję na początek FillRect żeby wyczyścić to co było do tej pory. A może sprawdź czy w procedurze obsługi zdarzenia ma właściwy tryb Pen.Mode (pmCopy).

Uhm, chyba już widzę. Spróbuj się oddallić od krawędzi komórki o 1 pixel (Rect.Right - 1) i zobacz co się stanie. Być może następna komórka przykrywa Ci rysowanko z poprzedniej.

b

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0