Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DisplayFormat+TStringGridanzeige (https://www.delphipraxis.net/95633-displayformat-tstringgridanzeige.html)

LOMBI 10. Jul 2007 19:28

Datenbank: ABS-db • Version: 5.12 • Zugriff über: ABSQuery

DisplayFormat+TStringGridanzeige
 
Hallo,

im AfterOpen der Query habe ich den Code:

Delphi-Quellcode:
 with DataSet.FieldByName('VKnetto') as TNumericField do
  DisplayFormat := '#.###.##0.00';
Dieser bewirkt leider nicht die gewünschte Anzeige des Betrages mit Nachkommastellen.
Wer hilft bitte?

Gruß
Lombi

marabu 10. Jul 2007 20:05

Re: DisplayFormat+TStringGridanzeige
 
Hallo Lombi,

nur der erste Punkt wird als Dezimaltrennzeichen erkannt:

Delphi-Quellcode:
with DataSet.FieldByName('VKnetto') as TNumericField do
  DisplayFormat := '#,###,##0.00';
Freundliche Grüße

LOMBI 10. Jul 2007 20:20

Re: DisplayFormat+TStringGridanzeige
 
Danke marabu,

aber im Grid steht immer noch 1 statt 1,00
Wie bitte löse ich das?

marabu 10. Jul 2007 20:22

Re: DisplayFormat+TStringGridanzeige
 
Wenn das Eingabefeld den Fokus hat, dann wird EditFormat statt DisplayFormat nicht verwendet.

Hast du den Cursor mal in ein anderes Feld gesetzt?

LOMBI 10. Jul 2007 20:26

Re: DisplayFormat+TStringGridanzeige
 
Ja, das habe ich.
Bei mir findet keine direkte Eingabe im Grid statt.
Vielleicht hängt das mit onDrawCell des Grids zusammen?

mkinzler 10. Jul 2007 20:29

Re: DisplayFormat+TStringGridanzeige
 
Zitat:

Vielleicht hängt das mit onDrawCell des Grids zusammen?
Wenn du die Zellen selber zeichnest musst du dich auch selber ums Format kümmern. was machst du im OwnerDraw?

LOMBI 10. Jul 2007 20:35

Re: DisplayFormat+TStringGridanzeige
 
In der ABSTabelle ist alles richtg dargestellt, im Grid werden die Nullen unterschlagen!
Also muß im OnDrawCell des Grid noch irgendetwas für DisplayFormat hinzugefügt werden.

mkinzler 10. Jul 2007 20:40

Re: DisplayFormat+TStringGridanzeige
 
Wie zeichnest du die Zellen?

LOMBI 10. Jul 2007 20:41

Re: DisplayFormat+TStringGridanzeige
 
Delphi-Quellcode:
...
  // Zelle einfärben
    if (ARow < FixedRows) or (ACol < FixedCols)
      then Canvas.Brush.Color := clBlue
      else
      if (ARow = Row) and (ACol >= FixedCols)
      then Canvas.Brush.Color := clYellow
      else Canvas.Brush.Color := clWhite;
      Canvas.FillRect(Rect);

mkinzler 10. Jul 2007 21:05

Re: DisplayFormat+TStringGridanzeige
 
Ruf mal die default Drawmethode auf.

LOMBI 12. Jul 2007 19:17

Re: DisplayFormat+TStringGridanzeige
 
Meinst Du DefaultDrawing?

mkinzler 12. Jul 2007 19:25

Re: DisplayFormat+TStringGridanzeige
 
Ja

LOMBI 12. Jul 2007 19:33

Re: DisplayFormat+TStringGridanzeige
 
DefaultDrawing: True/False
Da tut sich leider nichts!

LOMBI 14. Jul 2007 11:52

Re: DisplayFormat+TStringGridanzeige
 
Hallo,

am onDrawCell hängt es vermutlich auch nicht.
Strings werden im Grid schon mit Nullen dargestellt.

Ist vielleicht die folgende Zuweisung nicht korrekt?

Delphi-Quellcode:
QueryArt.FieldByName('VKNetto').AsFloat := StrToFloat(EdVKNet.Text);
Warum werden dabei im Grid die Nullen nach dem Komma nicht gezeigt?

Wer hilft bitte weiter?

Gruß
Lombi

marabu 14. Jul 2007 18:58

Re: DisplayFormat+TStringGridanzeige
 
Hallo Lombi,

wenn du beim Ereignis OnDrawCell() den Feldwert des DataSet für die Ausgabe bereit stellst, dann solltest du nicht Field.AsString verwenden. Versuche es mal mit Field.DisplayText.

Freundliche Grüße

LOMBI 14. Jul 2007 19:17

Re: DisplayFormat+TStringGridanzeige
 
Hallo marabu,

super 100 Punkte für dich!
Zum Abschluß noch eine Frage:
Statt "Currency" in der Tabelle kann ich doch solche Werte auch als Float deklarieren oder?

Viele Grüße
Lombi

marabu 14. Jul 2007 19:28

Re: DisplayFormat+TStringGridanzeige
 
Du meinst wegen deiner vier Nachkommastellen? Niemand kann dich davon abhalten.

Schönes Wochenende

LOMBI 14. Jul 2007 19:46

Re: DisplayFormat+TStringGridanzeige
 
... muß doch noch eine Frage nachschieben:

Wie erreiche ich, dass die Beträge im Grid alle rechtsbündig angezeigt werden?
Bei unterschiedlich langen Werten sieht das optisch nicht besonders gut aus.

Auch dir ein schönes Wochenende!

Gruß Lombi

mkinzler 14. Jul 2007 20:21

Re: DisplayFormat+TStringGridanzeige
 
Zitat:

Zitat von LOMBI per PN
Vielleicht sollte ich VKBrutto und VKNetto in der ABSTabelle als String deklarieren

Davon würde ich stark abraten.
Ich würde den Wert formatiert anzeigen lassen

LOMBI 14. Jul 2007 20:29

Re: DisplayFormat+TStringGridanzeige
 
marabu hatte in der Zwischenzeit die Lösung.
Hast du einen Tipp, wie ich im Grid die Beträge rechtsbündig darstellen kann?

mkinzler 14. Jul 2007 20:33

Re: DisplayFormat+TStringGridanzeige
 
Setzte das Alignment dementsprechend.

LOMBI 14. Jul 2007 21:14

Re: DisplayFormat+TStringGridanzeige
 
Meinst du so etwas?

Delphi-Quellcode:
EdVKnet.SetAlignment(taRightJustify);
Bei StringGrid gibt es kein Alignment.

DeddyH 14. Jul 2007 21:34

Re: DisplayFormat+TStringGridanzeige
 
Dann hilft Selberzeichnen. DefaultDrawing auf false und OnDrawCell z.B. so etwas:
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var s: string;
    R: TRect;
begin
  if (ACol >= StringGrid1.FixedCols) and (ARow >= StringGrid1.FixedRows) then
    begin
      R := Types.Rect(Rect.Left, Rect.Top,Rect.Right - 2,Rect.Bottom - 2);
      s := StringGrid1.Cells[ACol,ARow];
      DrawText(StringGrid1.Canvas.Handle,PChar(s),-1, R,DT_RIGHT or DT_BOTTOM or DT_SINGLELINE);
    end;
end;


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