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 Im Stringgrid eine Linie dicker als andere (https://www.delphipraxis.net/30471-im-stringgrid-eine-linie-dicker-als-andere.html)

gordon freeman 25. Sep 2004 10:44


Im Stringgrid eine Linie dicker als andere
 
Hi Leute,
ich hab 'nen StringGrid mit 7 Spalten. Die letzten beiden sollen sich jetzt von den ersten 5 abheben. Ich hatte gedacht, dass man einfach die Linie zwischen Spalte 5 und 6 dicker macht, als die anderen. hab aber keine ahnung wie das geht.
Falls aber einer von euch 'ne Alternative weiss, bin ich dankbar.

tia, read you gordon

CenBells 25. Sep 2004 10:56

Re: Im Stringgrid eine Linie dicker als andere
 
hi,

es gibt ein event onDrawCell oder so ähnlich. Da kannst du dann bestimmen, wie die zellen gemalt werden und an deiner vorgesehenen stelle den rand dicker machen.

ich habe hier mal nen code, der in einem kalendar (oben waren die tage) die spalte des aktuellen tag dick eingerahmt hat. (links und rechts dick)
Delphi-Quellcode:
    if Acol > 0 then
      if EncodeDate(FYear, FMonth, ACol) = Date then begin
        Canvas.Pen.Color := clBlack;
        Canvas.Pen.Width := 2;
        Canvas.MoveTo(Rect.Left, Rect.Top); // links
        Canvas.LineTo(Rect.Left, Rect.Bottom);
        Canvas.MoveTo(Rect.Right, Rect.Top); //rechts
        Canvas.LineTo(Rect.Right, Rect.Bottom);
      end;
du musst halt nur die zeile mit dem encodedate anpassen und unten eine linie weniger zeichnen.

Gruß
Ken

gordon freeman 25. Sep 2004 14:34

Re: Im Stringgrid eine Linie dicker als andere
 
Danke für die schnelle Antwort. Hab jetzt folgenden Code:
Delphi-Quellcode:
procedure StringGrid1.DrawCell(Sender: TObject; Acol, ARow : Integer;
Rect:TRect; State:TGridDrawState);
begin
if Acol = 4 then
   begin
   Canvas.Pen.Color:=clblack;
   Canvas.Pen.eidth:=3;
   Canvas.moveto(Rect.Left,Rect.Top);
   Canvas.Lineto(Rect.Left,Rect.Bottom);
   end;
Allerdings verstärkt er nicht die Linie im Stringgrid, sondern zeichnet eine Linie, die dann quasi vom Grid verdeckt wird. Was soll ich denn jetzt machen? :(

CenBells 25. Sep 2004 15:57

Re: Im Stringgrid eine Linie dicker als andere
 
hi,

probier mal vor jedes Canvas noch dein Stringgrid zu schreiben
Delphi-Quellcode:
procedure StringGrid1.DrawCell(Sender: TObject; Acol, ARow : Integer;
Rect:TRect; State:TGridDrawState);
begin
if Acol = 4 then
   begin
   DeinGrid.Canvas.Pen.Color:=clblack;
   DeinGrid.Canvas.Pen.eidth:=3;
   DeinGrid.Canvas.moveto(Rect.Left,Rect.Top);
   DeinGrid.Canvas.Lineto(Rect.Left,Rect.Bottom);
   end;
hatte vergessen, daß in der funktion, aus der ich das genommen habe, am anfang der methode ein
Delphi-Quellcode:
with Sender as TStringgrid do begin
steht

Gruß
Ken

gordon freeman 25. Sep 2004 16:50

Re: Im Stringgrid eine Linie dicker als andere
 
Danke! Mit
Delphi-Quellcode:
StringGrid1.canvas.{etc};
geht es!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.

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