Einzelnen Beitrag anzeigen

taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#8

Re: StringGrid -> Zwei Spalten gruppieren

  Alt 26. Okt 2007, 16:25
Hallo Holger,
folgender beispielhafter Code sollte dir weiterhelfen ...

Delphi-Quellcode:
procedure TfoTest9.sgDrawCell(Sender:TObject;ACol,ARow:Integer;Rect:TRect;State:TGridDrawState);
begin
  with (Sender as TStringGrid) do
    with (Sender as TStringGrid).Canvas do

      if (ACol=3) and
         (ARow=2) then begin Rect.Left:=Rect.Left-ColWidths[ACol-1]-GridLineWidth;
                            
                             Font.Color:=clYellow;
                             FillRect(Rect);

                             TextOut(Rect.Left+2,Rect.Top+2,Cells[ACol-1,ARow]);
                             end;
end;
Das DefaultDrawing bleibt für das Grid aktiviert, daher können wir uns in unserem Beispiel darauf beschränken nur die Zellen selber zu "malen" die abweichend vom Standard ausgegeben werden sollen. In meinem Beispiel sollen NUR die Zellen 2 und 3 in der Zeile 2 verändert werden. Der Trick (?) besteht eigentlich nur darin, dass die Änderung erst erfolgt, wenn die Zelle 3 an der Reihe ist: Dann setzen wir Rect.Left auf den Anfang der Zelle 2 - anstelle absoluter Wertangabe für die Spaltenbreite sollte man besser diesen Wert beim Grid "erfragen"; außerdem darf die Trennlinie zwischen den Spalten nicht vergessen werden (müsste eigentlich anhängig von goVertLine=true/false subtrahiert werden)
Was in diesem Beispiel nicht berücksichtigt ist, dass du natürlich auch in dem Fall, dass die Zellen mit "Spezialbehandlung" den Focus bekommen, selber für das Zeichnen verantwortlich bist.

So, ich denke damit müsstest du weiterkommen, noch viel Spaß dabei ...
Gruß Ralph
Ralph
  Mit Zitat antworten Zitat