![]() |
kleine D8 procedure StringGrid1DrawCell
Hi,
folgendes ist mir rätselhaft im Zusammenhang mit D8 :
Delphi-Quellcode:
Der Zweck ist, in einem Stringgrid 2 Nachkommastellen darzustellen. Ich gebe also "1" ein und es steht da "1.00" in der Zelle. Wie mache ich das nun unter D8 ? Und zwar ohne diese komische WinApi benutzen zu müssen ?
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState); procedure WriteText(StringGrid: TStringGrid; ACanvas: TCanvas; const ARect: TRect; const Text: string); const DY = 2; var S: array[0..255] of Char; begin with Stringgrid, ACanvas, ARect do begin ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text), Length( Text), nil); end; end; procedure Display(StringGrid: TStringGrid; const S: string); begin WriteText(StringGrid, StringGrid.Canvas, Rect, S); end; begin inherited; if (ACol = 1) or (ACol >=4) then Display(StringGrid1, StringGrid1.Cells[ACol, ARow]); end; [edit=sakura] Titel gekürzt Mfg, sakura[/edit] [edit=fkerber]Neu gespeichert wg. Code-Highlighting. Mfg, fkerber[/edit |
Re: kleines D8 Programmprocedure TfrmRegis.StringGrid1DrawCe
Die WinAPI steht doch unter D8 noch zur Verfügung, nur über viele Umwege.
|
Re: kleines D8 Programmprocedure TfrmRegis.StringGrid1DrawCe
Zitat:
Vielmehr will ich wissen, wie man so ein konkretes Beispiel sauber mit D8 eben ohne Winapi realisiert. Vielleicht hat es sich noch nicht so rumgesprochen, aber ein WinApi Programm ist in .NET ungefähr das, was ein DOS-Programm heute unter Win32 ist. Dann gibt es nicht nur eine "Dos-Box" wie unter Win32, sondern auch eine "Win32"-Box in .NET. Dies wiederum bedeutet, daß die Vorteile von .NET nicht genutzt werden können, die Programme wohl langsamer werden usw., sofern immer noch die alte WinApi eingesetzt wird. |
Re: kleine D8 procedure StringGrid1DrawCell
Zitat:
Die VCL.Net verwendet massiv Win32 Calls, da es Big B nicht fertiggebracht hat, sie vollständig unter .Net laufen zu lassen. Zu deinem Problem: Binde den NameSpace System.Globalization ein. Ein simples...
Delphi-Quellcode:
... gibt dir deine formatierte Zahl.
var
fmtConv :NumberFormatInfo ; ... begin ... fmtConv := Application.CurrentCulture.NumberFormat.Clone as NumberFormatInfo; fmtConv.NumberDecimalDigits := 2; DaHastDuEs := System.Decimal.Parse('1').ToString('N', fmtConv); end; [edit=fkerber]Neu gespeichert wg. Code-Highlighting. Mfg, fkerber[/edit |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz