AGB  ·  Datenschutz  ·  Impressum  







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

Stringgrid-Zellen rechtsbündig

Ein Thema von Hansa · begonnen am 29. Jan 2010 · letzter Beitrag vom 14. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

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

Stringgrid-Zellen rechtsbündig

  Alt 29. Jan 2010, 16:12
Hi,

ich habe hier ein abgeleitetes Stringgrid. Es geht da u.a. um Zellenformatierung. Reals sollen direkt autom. Nachkommastellen haben usw. Momentan sieht das so aus :

Delphi-Quellcode:
procedure TExtStringGrid.SetCellReal(ACol, ARow: integer;
  const Value: real);
begin
  FCellReal := Value;
  Cells [ACol,ARow] := FloatToStrF(FCellReal,ffFixed,8,2);
end;
Damit kann ich also statt Cells [x,y] einfach CellReal [x,y] aufrufen und fertig. Die Zellen sind allerdings dann nicht rechtsbündig. Aktuell habe ich dafür noch eine Prozedur, die im DrawCell aufgerufen wird :

Delphi-Quellcode:
procedure sgRechts (Sender: TObject; Rect: TRect; ACol, ARow:Integer);
var st: String;
begin
  with Sender as TExtStringGrid do begin
    Canvas.FillRect(Rect);
    st := Cells[ACol,ARow];
    DrawText(Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT);
  end;
end;
Wie kriege ich diese Prozedur sgRechts nun direkt der Komponente beigebracht ? Da gibts ja so kein Rect etc.
Gruß
Hansa
  Mit Zitat antworten Zitat
Question_mark

Registriert seit: 20. Okt 2004
54 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Stringgrid-Zellen rechtsbündig

  Alt 29. Jan 2010, 16:47
Hallo,

Zitat von Hansa:
Wie kriege ich diese Prozedur sgRechts nun direkt der Komponente beigebracht ?
Mal ganz spontan mein erster Gedanke dazu :

Den InplaceEditor von TStringGrid überschreiben bzw ersetzen ?

Gruß

Question_mark
  Mit Zitat antworten Zitat
Hansa

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

Re: Stringgrid-Zellen rechtsbündig

  Alt 29. Jan 2010, 18:52
Es geht nur um die Ausgabe des Grids, also die Anzeige.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Stringgrid-Zellen rechtsbündig

  Alt 29. Jan 2010, 18:53
Mal doch selber
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

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

Re: Stringgrid-Zellen rechtsbündig

  Alt 29. Jan 2010, 20:24
Werde ich nicht tun. Fange gewiss noch an den Bildschirm anzustreichen. Die Komponente soll lediglich das integriert machen, was die externe Prozedur macht. Wer weiss mehr ?
Gruß
Hansa
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Stringgrid-Zellen rechtsbündig

  Alt 29. Jan 2010, 20:32
Hallo,

ich hatte vor einiger Zeit mal begonnen, eine eigene Grid-Komponente abzuleiten, habe dann allerdings irgendwann nicht mehr weitergemacht.
Ich habe die Unit sowie eine Testanwendung mal angehängt. Ob Du die Testanwendung linken kannst, musst Du mal schauen - ist wie gesagt schon ein paar Tage her - vielleicht kannst Du ja etwas davon gebrauchen.

Noch etwas zu der Testanwendung:
Alle Funktionen sind über das Kontextmenü und die Toolbar zugänglich. Fast alle Funktionen lassen sich nur dann ausführen, wenn eine Zelle 'spezialisiert' ist. Du musst also erst eine Zelle über das Kontextmenü 'spezialisieren' - doofer Ausdruck, ich weiß...
Wenn Du also die Ausrichtung einer Zelle ändern willst, musst Du sie erst spezialisieren, dann die Ausrichtung oben in der Toolbar einstellen, und dann über das Kontextmenü die Ausrichtung für die aktive Zelle setzen. Das lässt sich natürlich auch einfacher implementieren, aber das ist wie gesagt nur eine Anwendung, um alle Funktionalitäten zu testen.

Edit: ich hatte irgendwann mal angefangen, die Kommentare ins Englische zu übersetzen - aber wie gesagt, nur angefangen! Also nicht wundern, wenn es irgendwann wieder deutsch wird - aber Hauptsache überhaupt kommentiert
Miniaturansicht angehängter Grafiken
screenshot_testanwendung_151.png  
Angehängte Dateien
Dateityp: zip specialcellgrid_169.zip (1,47 MB, 81x aufgerufen)
Gruß
s-off
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Stringgrid-Zellen rechtsbündig

  Alt 3. Mär 2010, 19:40
Ich habe hier einen Codeschnippsel gefunden, mit dem man die Zellen linksbündig, zentriert oder
rechtsbündig formatieren kann und den Code auf Rechtsbündigkeit gekürzt.

Delphi-Quellcode:
//http://www.delphi-forum.de
//procedure WriteTextAligned und
//procedure TForm1.StringGrid1DrawCell
procedure WriteTextAligned(Canvas: TCanvas; Rect: TRect; Alignment: TAlignment; Text: string);
var xPos, yPos: integer;
begin
xPos := Rect.Left + 2; // Standard verhalten
yPos := Rect.Top + 2; // Standard verhalten
with Canvas do
  begin
    xPos := Rect.Left + (Rect.Right - Rect.Left - TextWidth(Text) - 2);
    TextRect(Rect, xPos, yPos, Text);
  end;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
          Rect: TRect; State: TGridDrawState);
begin
  // Alle Spalten rechtsbündig
  WriteTextAligned(TStringGrid(Sender).Canvas, Rect, taRightJustify, TStringGrid(Sender).Cells[Acol, ARow]);
end;
Ich denke, das können andere auch gebrauchen ...
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

Re: Stringgrid-Zellen rechtsbündig

  Alt 3. Mär 2010, 19:48
Nunja, mit DrawText (siehe Ausgangspost) ist das einfacher gemacht, dazu müsste es auch diverse Beispiele in der DP geben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Stringgrid-Zellen rechtsbündig

  Alt 3. Mär 2010, 19:56
@Detlef
Danke für den Tipp, muss ich ausprobieren.
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Hansa

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

Re: Stringgrid-Zellen rechtsbündig

  Alt 14. Mär 2010, 17:18
Habe das mal wieder in Angriff genommen. Und zwar so :

Delphi-Quellcode:
procedure TExtStringGrid.SetCellInteger(ACol, ARow: integer;
  const Value: integer);
var st : string;
    Rect : TRect;
begin
  FCellInteger := Value;
  Cells [ACol,ARow] := IntToStr(value);
  Rect := CellRect(ACol,ARow);
  Canvas.FillRect(Rect);
  st := 'Test';
  InflateRect(rect,-2,-2);
  DrawText(Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT);
end;
Ergebnis : Nichts ! Ab der Zeile :Cells [ACol,ARow] := IntToStr(value); tut sich offensichtlich nichts mehr. Der übergebene Zahlenwert steht in den Zellen. Die Rect-Koordinaten stimmen, aber von 'Test' ist absolut nichts zu sehen. Was ist da falsch ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:46 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