Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Zeichnen von Zellen im Stringgrid unterdrücken (https://www.delphipraxis.net/116239-zeichnen-von-zellen-im-stringgrid-unterdruecken.html)

messie 25. Jun 2008 13:39


Zeichnen von Zellen im Stringgrid unterdrücken
 
Moin,

ich möchte Text in einem StringGrid über mehrere Zeilen zentrieren. Im OnDrawCell vergrößere ich das Rect und schreibe dann den Text ins neue Rect. Danach werden die nachfolgenden Zellen aber darüber gezeichnet, so dass mein Text weg ist.
Gibt es da einen Trick, wie das Zeichnen einzelner Zellen zu unterbinden ist oder gibt es dafür einen anderen Ansatz?

Danke, Messie

iKilledKenny 25. Jun 2008 13:52

Re: Zeichnen von Zellen im Stringgrid unterdrücken
 
Du solltest halt in den Zellen, die du mit dem Text übermalst, nichts anderes zeichnen (FillRect, etc.) Ansonsten mach ich das nämlich genau so.

Vielleicht mal die OnDrawCell Routine posten.

messie 25. Jun 2008 14:04

Re: Zeichnen von Zellen im Stringgrid unterdrücken
 
Zitat:

Zitat von iKilledKenny
Du solltest halt in den Zellen, die du mit dem Text übermalst, nichts anderes zeichnen (FillRect, etc.) Ansonsten mach ich das nämlich genau so.

Vielleicht mal die OnDrawCell Routine posten.

Delphi-Quellcode:
if (ARow = Index1) then
  begin
    if (ACol = 3) or (ACol = 8) then //Beschriftungsfelder
    begin
      with Sender as TTntStringGrid do
      begin
        s := Cells[ACol,ARow];
        Rect.Right := Rect.Right + (Rect.Right - Rect.Left) * 3;
        Canvas.FillRect(Rect);
        DrawTextW(Canvas.Handle, PWideChar(s),Length(s),Rect,DT_CENTER or DT_VCenter);
      end;
    end
    else
    begin
      exit;
    end;
  end
eine leere Zelle wird aber doch normalerweise gezeichnet. Kannst Du das irgendwie abschalten?

Grüße, Messie

taaktaak 25. Jun 2008 14:39

Re: Zeichnen von Zellen im Stringgrid unterdrücken
 
Habe 'ne ganze Weile nix mit dem Stringrid gemacht, aber die Lösung ist wohl, dass du das nicht in der ersten Zelle für die nächsten, sondern in der letzten Zelle für alle vrohergehenden Zellen zeichnest. Also: Du willst die Zellen 3-5 verbinden, dann wird deine Zeichenaktion erst tätig, wenn die Zelle 5 gezeichnet werden soll...

iKilledKenny 25. Jun 2008 14:47

Re: Zeichnen von Zellen im Stringgrid unterdrücken
 
Dem muss ich widersprechen, ich mach das genauso, das ich in der ersten "verbundenen" Zelle male und dann nicht mehr.

Unterschied zu meiner Routine: Ich benutze ein TStringGrid.
TTntStringGrid kenne ich gar nicht.

taaktaak 25. Jun 2008 15:08

Re: Zeichnen von Zellen im Stringgrid unterdrücken
 
Widerspruch angenommen! Habe nachgesehen: Es funktioniert auch in der ersten verbundenen Zelle - Sorry

messie 26. Jun 2008 07:55

Re: Zeichnen von Zellen im Stringgrid unterdrücken
 
Also das mit dem rückwärts Zeichnen klappt gut! Sieht so aus, als würden leere Zellen im TStringGrid nicht, aber im TTntStringGrid immer gezeichnet.

Danke, Messie

Razor90 26. Jun 2008 18:18

Re: Zeichnen von Zellen im Stringgrid unterdrücken
 
Das geht aber leider über die ganze Zeilenlänge....wie kann ich jetzt übereinanderliegende Zellen verbinden, nur 2 und nicht alle???

Lannes 26. Jun 2008 18:35

Re: Zeichnen von Zellen im Stringgrid unterdrücken
 
Hallo,

Du musst für jede der zusammengehörigen Zellen den gleichen Bereich und das gleiche zeichnen.

messie 27. Jun 2008 07:44

Re: Zeichnen von Zellen im Stringgrid unterdrücken
 
Zitat:

Zitat von Razor90
Das geht aber leider über die ganze Zeilenlänge....wie kann ich jetzt übereinanderliegende Zellen verbinden, nur 2 und nicht alle???

Wenn Dein Grid von oben nach unten gezeichnet wird, musst Du Rect nach oben vergrößern. Wenn Du immer eine genze Zeile geändert bekommst, kontrolliere mal die Options des Grid. Bei meinem Beispiel kann das Grid schonmal nicht editiert werden, es dient nur der Anzeige. Zusammengezeichnete Zellen zu markieren stelle ich mir wesentlich aufwändiger vor.

Grüße, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr.
Seite 1 von 2  1 2      

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