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 Linien im Stringgrid ziehen (https://www.delphipraxis.net/42122-linien-im-stringgrid-ziehen.html)

Hansa 14. Mär 2005 10:59


Linien im Stringgrid ziehen
 
Hi,

folgendes Problem :

ich zeige eine Adress-Liste in einem Stringgrid an. Die sieht ungefähr so aus :

Delphi-Quellcode:
Anrede      Strasse
Name        Ort
Jetzt möchte ich nach jeder Adresse, also praktisch in jeder 2. Zeile eine etwas dickere Linie ziehen, um die einzelnen Adressen etwas besser abzugrenzen. Wie kann ich das machen ?

Union 14. Mär 2005 11:48

Re: Linien im Stringgrid ziehen
 
Zitat:

Zitat von Hansa
Hi,

folgendes Problem :

ich zeige eine Adress-Liste in einem Stringgrid an. Die sieht ungefähr so aus :

Delphi-Quellcode:
Anrede      Strasse
Name        Ort
Jetzt möchte ich nach jeder Adresse, also praktisch in jeder 2. Zeile eine etwas dickere Linie ziehen, um die einzelnen Adressen etwas besser abzugrenzen. Wie kann ich das machen ?

Verwende für sowas doch lieber das dbctrlgrid, wobei ich einfach mal davon ausgehe, dass die Adressdaten aus einer DB-Tabelle kommen ;)

Hansa 14. Mär 2005 12:01

Re: Linien im Stringgrid ziehen
 
Folgendes ist in Erwägung gezogen :

1. eben einfach keine dickere Linie
2. Leerzeile zur Abgrenzung
3. DBCtrlGrid :mrgreen:

Ich habe allerdings noch einen anderen Fall, wo ich so was ähnliches bräuchte. Und das geht definitiv nicht mit DBCtrlGrid.

Sharky 14. Mär 2005 12:09

Re: Linien im Stringgrid ziehen
 
Hai Hansa,

und wieder heist es: "selber zeichnen" ;-)

hier einmal ein Ansatz:
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (ACol > 0) and (ARow > 1) then
    begin
     with (Sender as TStringGrid) do
      begin
       if not ((ARow mod 2) = 0) then        //jede zweite Zeile berücksichtigen
        begin
         Canvas.Pen.Color := clRed;
         Canvas.Pen.Width := 3;
         Canvas.MoveTo(rect.Left,rect.Top);
         Canvas.LineTo(rect.Right,rect.Top)
        end;
      end;
    end;
end;
Da gibt es nur noch einen kleinen Schönheitsfehler wenn nach dem eine Zelle/Zeile den Fokus hatte nach oben geganen wird.
Irgenwie wird da ein Stück der Linie abgeschnitten.

Hansa 14. Mär 2005 12:29

Re: Linien im Stringgrid ziehen
 
Ich sehe da keinen Fehler. Zumindest nicht beim Scrollen. Allerdings ist folgendes etwas seltsam : die erste NICHT fixed Zelle bleibt wie vorher auch. die dicke Linie fängt also erst bei der 2. Spalte an.

Sharky 14. Mär 2005 12:32

Re: Linien im Stringgrid ziehen
 
Zitat:

Zitat von Hansa
Ich sehe da keinen Fehler. Zumindest nicht beim Scrollen.

Setze mal .With := 10 dann sieht man den Fehler besser.
Zitat:

. die dicke Linie fängt also erst bei der 2. Spalte an.
Du hast in deiner Frage ja auch gesagt das es bei jeder 2. Spalte sein soll ;-)

Hansa 14. Mär 2005 12:37

Re: Linien im Stringgrid ziehen
 
Zitat:

Zitat von Sharky
..Du hast in deiner Frage ja auch gesagt das es bei jeder 2. Spalte sein soll ;-)

Nene. :mrgreen: Jede 2. Zeile !

Sharky 14. Mär 2005 12:39

Re: Linien im Stringgrid ziehen
 
:wall:
Ich sollte die Brille putzen. :mrgreen:

Wenn es auch schon in der ersten Spalte sein soll dann nehme die Prüfung auf diese doch raus ;-)
Delphi-Quellcode:
  if (ARow > 1) then
    begin
    .
    .


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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