AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

rechtsbündiges Stringgrid

Ein Thema von Hansa · begonnen am 23. Okt 2004 · letzter Beitrag vom 24. Okt 2004
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

rechtsbündiges Stringgrid

  Alt 23. Okt 2004, 15:51
Hi,

ich bin dabei ein Stringgrid, besser gesagt den Inhalt der Zellen, rechtsbündig anzuzeigen. Und zwar mit folgendem Code:

Delphi-Quellcode:
procedure sgRechts (sg: TStringGrid; Rect: TRect; ACol, ARow:Integer);
var st: String;
begin
  sg.Canvas.FillRect(Rect);
  st := sg.Cells[ACol,ARow];
  DrawText(sg.Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT);
end;
Horizontal gesehen ist es auch rechts, aber sobald ich die Eingabe beendet wandert der Text nicht nur nach rechts, sondern auch nach oben. Er ist also vertikal nicht mehr zentriert. Woran kann das liegen ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: rechtsbündiges Stringgrid

  Alt 23. Okt 2004, 16:33
Versuche es mal mit DT_RIGHT or DT_VCENTER
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: rechtsbündiges Stringgrid

  Alt 23. Okt 2004, 23:08
DT_VCENTER bewirkt nichts !

Habe hier ein Beispiel, das mit einem neuen Projekt und folgendem Code gemacht wurde:

Delphi-Quellcode:
procedure sgRechts (sg: TStringGrid; Rect: TRect; ACol, ARow:Integer);
var st: String;
begin
  sg.Canvas.FillRect(Rect);
  st := sg.Cells[ACol,ARow];
  DrawText(sg.Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT OR DT_VCENTER);
end;

procedure Tform1.StringGrid1DrawCell(Sender: TObject; ACol,ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  inherited;
  if (ACol in [1..3]) then
    sgRechts(StringGrid1, Rect, ACol, ARow);
end;
Im Anhang sieht man das Ergebnis. In der letzten Zeile sieht man, wie es aussieht, bevor die Zelle verlassen wird.
Miniaturansicht angehängter Grafiken
unbenannt_127.gif  
Gruß
Hansa
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: rechtsbündiges Stringgrid

  Alt 24. Okt 2004, 09:38
Zitat von Hansa:
DT_VCENTER bewirkt nichts !
Wenn man sich die Hilfe anschauen würde, schon. DT_VCenter geht nur in Verbindung mit DT_Singleline. Dann würde aber der Text in den Zeilen zentriert werden, wenn die Zeilenhöhe zu hoch ist, würde der Text zu weit nach unten rutschen.

Wenn du dir den original code von drawcell anschaust, siehst du, daß der Text immer um 2 Pixel nach rechts und unten versetzt gezeichnet wird. Entweder du veränderts dein rect.top und rect.left auch um +2 oder nutzt inflaterect.

Delphi-Quellcode:
procedure sgRechts (sg: TStringGrid; Rect: TRect; ACol, ARow:Integer);
var st: String;
begin
  sg.Canvas.FillRect(Rect);
  st := sg.Cells[ACol,ARow];
  InflateRect(rect,-2,-2); //<<----
  DrawText(sg.Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT);
end;
Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: rechtsbündiges Stringgrid

  Alt 24. Okt 2004, 13:40
Thx, Keldorn das wars. Habe hier zwar noch anderen Code, der dasselbe macht, aber der jetzige ist besser. Und wegen .NET auch ein @ weniger.
Gruß
Hansa
  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 10:10 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