Einzelnen Beitrag anzeigen

HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#10

Re: StringGrid -> Spalte zeichnen, obwohl ausserhalb der

  Alt 7. Nov 2007, 11:51
Hier meine Lösung (Lasse ALLE Spalten rückwärts Zeichnen, bis zum Anfang des gerade aktuellen Monats):

Info: Habe 366 Spalten. 1 Spalte = 1 Tag

In dem Ereignis on DrawCell
Delphi-Quellcode:
//Überschriften Monate eintragen
if (ACol > 1) AND (ARow = 0) then
begin
 
 //Datum der Spalte herrausfinden
 Datum := EncodeDateDay(strtoint(FormTerMas.CB_UP_Jahr.text), ACol - 1);
 
 //Bis zum ersten eines Monats rückwärts Zeichnen
 Rect.Left := Rect.Left + 1 - (6 * (ACol - DayOfTheYear(strtodate('01.' + inttostr(Monthof(Datum)) + '.' + CB_UP_Jahr.Text))));
 // Erste Spalte (Width = 125) soll nicht überzeichnet werden. Da stehen die User
 if Rect.Left < 126 then Rect.Left := 126;
 //Zeichnen
 Canvas.FillRect(Rect);
 //Text des aktuellen Monats ausgeben
 Canvas.TextOut(Rect.Left + 2,Rect.Top + 5, LongMonthNames[Monthof(Datum)]);

end;
Damit es sauberer Aussieht im OnTopLeftChanged-Ereignis:

STG_UP_JahresPlaner.Repaint; //Beim Scrollen des StringGrids immer neu Zeichnen lassen. Ist noch schnell genug Gruss

Holger

P.S.: Vielleicht weiss ja jemand wie man das optimieren kann ?
  Mit Zitat antworten Zitat