Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zahlen mit verschiedenen Nachkommastellen (https://www.delphipraxis.net/177805-zahlen-mit-verschiedenen-nachkommastellen.html)

Chris211183 28. Nov 2013 10:59

Zahlen mit verschiedenen Nachkommastellen
 
Hallo, ich bin seit langem mal wieder an Delphi.

Ich möchte bei meiner Komponente am Rand, Zahlen (von 0,0 bis 100,0) stehen haben.
Diese Zahlen sollen aber auch variable Nachkommastellen haben können wie z.B. von 0,000 bis 100,000.
Das soll im OI einstellbar sein über LabellingDecimals (1 für eine Nachkommastelle etc.)

Danke für eure Hilfe !


:stupid:

DeddyH 28. Nov 2013 11:04

AW: Zahlen mit verschiedenen Nachkommastellen
 
Siehe Delphi-Referenz durchsuchenFormat oder Delphi-Referenz durchsuchenFormatFloat, da kann man die Anzahl der dargestellten Nachkommastellen festlegen.

Chris211183 28. Nov 2013 11:18

AW: Zahlen mit verschiedenen Nachkommastellen
 
hatte schon an floatToStrF gedacht, will die ja aber im Objektinspektor variieren können...

Sir Rufo 28. Nov 2013 12:27

AW: Zahlen mit verschiedenen Nachkommastellen
 
Und wo ist das Problem?

Wie die Eigenschaft in den OI kommt oder was?

BTW mit Delphi-Referenz durchsuchenTWinControl.Invalidate wird ein Neuzeichnen veranlasst ;)

DeddyH 28. Nov 2013 12:29

AW: Zahlen mit verschiedenen Nachkommastellen
 
Ja und? Eine published-Property mit Setter genügt dafür. Kleine Beispielklasse:
Delphi-Quellcode:
type
  TDings = class
  private
    FNachkommastellen: integer;
    FFormatStr: string;
    procedure SetNachkommastellen(const Value: integer);
    function GetTestValue: string;
  public
    constructor Create;
  published
    property Nachkommastellen: integer read FNachkommastellen write SetNachkommastellen;
    property TestValue: string read GetTestValue;
  end;

constructor TDings.Create;
begin
  inherited Create;
  Nachkommastellen := 2;
end;

procedure TDings.SetNachkommastellen(const Value: integer);
begin
  FNachkommastellen := Value;
  FFormatStr := Format('%%.%df', [FNachkommastellen]);
end;

function TDings.GetTestValue: string;
begin
  Result := Format(FFormatStr, [Pi]);
end;
Anwendung:
Delphi-Quellcode:
procedure TFormTest.Button1Click(Sender: TObject);
var
  Dings: TDings;
begin
  Dings := TDings.Create;
  try
    Dings.Nachkommastellen := 3;
    ShowMessage(Dings.TestValue);
    Dings.Nachkommastellen := 1;
    ShowMessage(Dings.TestValue);
    Dings.Nachkommastellen := 2;
    ShowMessage(Dings.TestValue);
    Dings.Nachkommastellen := 5;
    ShowMessage(Dings.TestValue);
  finally
    Dings.Free;
  end;
end;

Sir Rufo 28. Nov 2013 12:32

AW: Zahlen mit verschiedenen Nachkommastellen
 
@Deddy

Er hat ja eine visuelle Komponente, und da muss lediglich nach dem Setzen
Delphi-Quellcode:
Invalidate
aufgerufen werden.

Aber ich sehe, dir ist das eigentliche Problem - wie mir - auch nicht klar ;)

DeddyH 28. Nov 2013 12:36

AW: Zahlen mit verschiedenen Nachkommastellen
 
Invalidate allein genügt nicht, es muss ja auch das geänderte Format berücksichtigt werden ;) Ich war nur zu faul, jetzt auch noch eine visuelle Komponente zu schreiben, daher muss das Beispiel genügen :mrgeen:

Chris211183 29. Nov 2013 09:46

AW: Zahlen mit verschiedenen Nachkommastellen
 
Danke DeddyH,

das war nicht das Problem, das Problem ist, dass ich nicht weiß, wie ich in der Paint Methode, die Zahlen an die Komponente bekomme...
Die Striche etc. malt er mir,so wie ich das will, nur wie bekomme ich die Zahlen visuell angezeigt über Canvas, kenne nur Canvas.TextOut..., das ja aber nicht der Sinn oder ?

DeddyH 29. Nov 2013 10:02

AW: Zahlen mit verschiedenen Nachkommastellen
 
Und was soll an Canvas.Texout falsch sein? Du kannst natürlich auch DrawText oder TextRect oder was weiß ich nehmen, aber das ändert an der generellen Vorgehensweise ja nichts.

Sir Rufo 29. Nov 2013 11:16

AW: Zahlen mit verschiedenen Nachkommastellen
 
Beantworte doch mal folgende Fragen:
  • Kannst du bei der Komponente eine Eigenschaft einbauen, die im OI auftaucht?
  • Kannst du beim Setzen des Eigenschaftswerts einen weiteren Befehl aufrufen?
  • Kannst du beim Zeichnen auf diese Eigenschaft zugreifen?
  • Kannst du eine Fließkommazahl in einen String mit Angabe der Nachkommastellen umwandeln?
  • Kannst du einen String auf dem Canvas ausgeben?
Alle Fragen mit "Yes, we can" beantwortet, dann weiß hier wohl niemand, wo jetzt das Problem liegt.

Eigentlich sind alle Punkte hier schon mehr oder weniger angesprochen worden


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr.
Seite 1 von 3  1 23      

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