Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TStringGrid (https://www.delphipraxis.net/114328-tstringgrid.html)

michael.cohrs 23. Mai 2008 13:30


TStringGrid
 
Hallo zusammen,

ich weiß, bestimmt eine Anfängerfrage aber mir fällt die lösung nicht ein:-(

ich möchte beim Selectieren von Zellen einer Stringgrid die Rahmenfarbe mit der
Selectierfarbe überschreiben, weiß aber nicht wie ich das schnell lösen kenn, hier mal ein kurzer
Auszug des Quelltextes

Delphi-Quellcode:
procedure TfrKalender.sgCalenderDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  sText    : String;
begin
  With sgCalender,canvas do
  begin
    if (gdFixed in State) then
    // fixen Zellen
      Brush.Color:= clBtnFace
    else
    if (ARow Mod 2 = 0) then
    begin
    // Zeilen mit gerader Zeilenzahl
      Brush.Color:= $00F9FDD7;
      Font.Color:= clWhite;
    end
    else
    //Zeilen mit ungerader Zeilenzahl
      Brush.Color:= clWhite;
    if (ACol = 1) or (ARow = 0) then
      sText :=Cells[Acol,ARow];
    if sText = 'Sa.' then
    begin
      Font.Color := $004080FF;
      Font.Style := [fsBold];
    end;
    if sText = 'So.' then
    begin
      Font.Color := clRed;
      Font.Style := [fsBold];
    end;
    if (gdSelected in State) then
    begin
[b]// hier sollen die Linien der Zellen durch die Hintergrundsfarbe ersetzt werden!![/b]
      Brush.Color := $00B9B9FF;
      Pen.Color  := clWhite;
      label1.Caption := inttostr(acol);
    end;
     FillRect(rect);
    // Text zeichnen
    TextOut(Rect.Left + 2, Rect.Top + 2, sgCalender.Cells[ACol, ARow]);
  end;
end;

Für einen schnellen Tipp wäre ich sehr dankbar.

Viele Grüße

Michael

s-off 23. Mai 2008 13:41

Re: TStringGrid
 
Hallo,

kann es sein, dass Du einfach vergessen hast, die Linien mit MoveTo() und LineTo() zu zeichnen? :zwinker:

Es genügt nicht, einfach nur die Farbe zu setzen - da die Linie kein Objekt ist, das sich selber ändert, musst Du schon den Pinsel schwingen ;)

Benutze dazu einfach die Werte aus 'Rect'.

michael.cohrs 23. Mai 2008 13:50

Re: TStringGrid
 
Danke für die schnelle Antwort, hättest du vieleicht nen kleine Beispiel für mich???

Gruß

Michael

s-off 23. Mai 2008 14:03

Re: TStringGrid
 
Ungetestet :!:

Sollte die untere Linie färben:
Delphi-Quellcode:
Canvas.Brush.Color := $00B9B9FF;
Canvas.Pen.Color := clWhite;
Canvas.MoveTo(Rect.Left, Rect.Bottom);
Canvas.LineTo(Rect.Right + 1, Rect.Bottom); // (+ 1) um den Schnittpuntk mit der rechten Linie ebenfalls zu färben
Die anderen Linien analog dazu.

michael.cohrs 23. Mai 2008 14:33

Re: TStringGrid
 
Grrrr....

ich kriegs einfach nich hin, möchte nur die vertikalen Linien durch die Hintergrundsfarbe ersetzen aber irgendwie funktioniert das nicht,

bitte....hast du nen Tipp oder Codeschnipsel?

Danke

Michael

michael.cohrs 23. Mai 2008 14:42

Re: TStringGrid
 
Erledigt,

vielen Dank für Deine Hilfe, manchmal sieht man den Baum vor lauter Wald nicht,

Viele Grüße

Michael


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz