AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Zelleninhalt bei StringGrid vertikal zentrieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Zelleninhalt bei StringGrid vertikal zentrieren?

Ein Thema von mirko2000 · begonnen am 30. Jul 2004 · letzter Beitrag vom 30. Jul 2004
Antwort Antwort
mirko2000

Registriert seit: 9. Nov 2003
69 Beiträge
 
#1

Zelleninhalt bei StringGrid vertikal zentrieren?

  Alt 30. Jul 2004, 11:08
Ich arbeite gerade mit einem Stringgrid und möchte den Zellinhalt vertikal zentriert ausgeben (die Höhe der Zeile ist immer gleich groß und kann nicht geändert werden, deswegen die Vereinfachung mit + 9). Folgender Code steht in der DrawCell-Prozedur:

Stringgrid1.Canvas.TextOut(rect.left,rect.top+9, StringGrid1.Cells[acol,arow]; Jetzt steht der Inhalt aber zwei mal drin und zwar jetzt schön vertikal zentriert aber auch noch an der alten Position. Wie krieg ich den Text an der alten Position weg?

Hab schon mal probiert den Inhalt davor in eine Variable zu schreiben, danach dann den Zellinhalt löschen und dann zentriert auszugeben (mit dem Inhalt in der Variable). Das funktioniert zwar soweit schon, aber der Zellinhalt wird anscheinend immer neu gezeichnet da die Felder zu flackern anfangen.
  Mit Zitat antworten Zitat
Benedikt
(Gast)

n/a Beiträge
 
#2

Re: Zelleninhalt bei StringGrid vertikal zentrieren?

  Alt 30. Jul 2004, 11:12
Hi,

überzeichne vorher einfach die komplette Zelle:

Delphi-Quellcode:
        
   StringGrid1.Canvas.Brush.Color:=clWindow;
   StringGrid1.Canvas.FillRect(Rect);
   stringgrid1.Canvas.TextOut(Rect.Left, Rect.Top+9, StringGrid1.Cells[ACol, ARow]);
  Mit Zitat antworten Zitat
mirko2000

Registriert seit: 9. Nov 2003
69 Beiträge
 
#3

Re: Zelleninhalt bei StringGrid vertikal zentrieren?

  Alt 30. Jul 2004, 11:37
Zitat von Benedikt:
Hi,

überzeichne vorher einfach die komplette Zelle:

Delphi-Quellcode:
        
   StringGrid1.Canvas.Brush.Color:=clWindow;
   StringGrid1.Canvas.FillRect(Rect);
   stringgrid1.Canvas.TextOut(Rect.Left, Rect.Top+9, StringGrid1.Cells[ACol, ARow]);
Gibt es da noch eine andere Alternative. Wenn ich nämlich mehere Zellen markiere verschwindet der Text und erscheint erst wieder, wenn die Markierung entfernt wird.
  Mit Zitat antworten Zitat
Benedikt
(Gast)

n/a Beiträge
 
#4

Re: Zelleninhalt bei StringGrid vertikal zentrieren?

  Alt 30. Jul 2004, 15:51
Zitat von mirko2000:
Wenn ich nämlich mehere Zellen markiere verschwindet der Text und erscheint erst wieder, wenn die Markierung entfernt wird.
Mhhhh... das kann ich jetzt nicht so ganz nachvollziehen.
Bei mir wird dann nicht mehr angezeigt welche Zellen markiert sind, was sich jedoch mit einer Abfrage von State im OnDrawCell umgehen lässt (wenn gdSelected in State).
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Zelleninhalt bei StringGrid vertikal zentrieren?

  Alt 30. Jul 2004, 16:16
Hallo,
anstatt Canvas.Textout kann man auch die API-Function DrawText verwenden. Über der Parameter uFormat läßt sich das gewünschte Verhalten sehr leicht einstellen.
Code:
DrawText(StringGrid.Canvas.Handle,PChar(StringGrid.Cells[aCol,ARow]),-1,Rect,dt_singleline or dt_vcenter or dt_center);
Das Beispiel zentriert den Text sowohl vertikal als auch horizontal.

[edit]Ich verwende gerade bei Grids eigentlich nur noch DrawText[/edit]
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Zelleninhalt bei StringGrid vertikal zentrieren?

  Alt 30. Jul 2004, 16:55
Setz bei dem Stringgrid im OI DefaultDrawing auf FALSE.

Allerdings musst du dann glaube ich deine Selection selber zeichenen...
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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