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 erledigt - Stringgrid - Reihe selektieren ohne RowSelect (https://www.delphipraxis.net/153926-erledigt-stringgrid-reihe-selektieren-ohne-rowselect.html)

aurikel_Max 20. Aug 2010 11:43


erledigt - Stringgrid - Reihe selektieren ohne RowSelect
 
Mahlzeit DP,

ich arbeite zurzeit noch an meinem Stringgrid. Bei diesem kann man, wenn man auf die oberste Reihe (ARow = 0) klickt, die Tabelle sortieren. Um dies zu ermöglichen, frage ich bei einem OnClick ab, ob die selektierte Reihe = 0 ist und danach erfolgt jetzt nach Spalte die entsprechende Sortierfunktion.

Allerdings möchte ich auch die ganze Reihe, wenn eine Zelle selektiert ist, farbig hervorheben. Dazu hatte ich ursprünglich RowSelect an. Wenn allerdings RowSelect an ist, komme ich nicht mehr an die aktuell selektierte Spalte.

Nun möchte ichc RowSelect selbst malen, dazu habe ich mir überlegt, dass ich im OnCellDraw-Event abfrage, ob die aktuell selektierte Reihe = der Reihe ist, die gerade gemalt wird. Ist dem so, so soll die Zelle farbig gemalt werden.

Im Quelltext sieht dies so aus:

Delphi-Quellcode:
  if ARow = sgrdOverview.Row then
  begin
    sgrdOverview.Canvas.Brush.Color := clHighlight;
    sgrdOverview.Canvas.Font.Color := clHighlightText
  end
  else
  begin
    sgrdOverview.Canvas.Brush.Color := clWindow;
    sgrdOverview.Canvas.Font.Color := clWindowText;
  end;
Wenn ich nun mein StringGrid anzeigen lassen, so wird die oberste Reihe (die einzige Reihe) auch erfolgreich angemalt. Wenn ich nun allerdings Daten reinlade und eine andere Zelle markiere, kommt es zu Fehlern. Wo liegt der Fehler im Quelltext? (DefaultDrawing ist aus)

Liebe Grüße,
Max

blauweiss 20. Aug 2010 12:28

AW: Stringgrid - Reihe selektieren ohne RowSelect
 
Hi aurikel_Max,

ich würde bei RowSelect = true bleiben. Damit ersparst Du Dir die Zeichenprobleme.
Du kommst einfach an die gewünschte Spalte, indem Du z.B. beim MouseDown auf die Kopfzeile die Methode MouseToCell verwendest.

Grüsse,
blauweiss

aurikel_Max 20. Aug 2010 13:27

AW: Stringgrid - Reihe selektieren ohne RowSelect
 
Zitat:

Zitat von blauweiss (Beitrag 1043752)
Hi aurikel_Max,

ich würde bei RowSelect = true bleiben. Damit ersparst Du Dir die Zeichenprobleme.
Du kommst einfach an die gewünschte Spalte, indem Du z.B. beim MouseDown auf die Kopfzeile die Methode MouseToCell verwendest.

Grüsse,
blauweiss

Ich danke dir, das klappt. :)


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