Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi LabelCompo zum Darstellen einer Zahl+Einheit (https://www.delphipraxis.net/21455-labelcompo-zum-darstellen-einer-zahl-einheit.html)

F.W. 3. Mai 2004 10:29


LabelCompo zum Darstellen einer Zahl+Einheit
 
Hallöchen, ich arbeite gerade an einem Programm für den Haushalt (zum Nachrechnen, damit man nicht zu viel bezahlt :P ). Habe mir dazu eine LabelCompo gebastelt, in die man

-eine Zahl eingeben und auslesen kann (1. neue Property)
-die Einheit (z.B. €) eingeben und auslesen kann (2. neue Property)

Die Caption braucht eigentlich nurnoch ReadOnly zu sein, da man an ihr nurnoch alles zusammen abliest

Bsp:
Code:
   Zahl = 15,03;
   Einheit = '€';
-> Caption = '15,03 €';
Aber ich scheine aus der Übung gekommen zu sein (habs schon lange nicht mehr gemacht), im Test auf nem Formular war jedenfalls nichts zu sehen, bein momentan so ziemlich ratlos :gruebel:

Delphi-Quellcode:
unit EinheitLbl;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls;

type
  TEinheitLbl = class(TLAbel)
  private
     bEinheit: String;
     bZahl: Double;
     bCaption: String;
     procedure SetCaption(S: String);
     procedure SetZahl(D: Double);
     procedure SetEinheit(S: String);
     function GetEinheit: String;
     function GetZahl: Double;
     function GetCaption: String;
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    property Caption: String read GetCaption write SetCaption;
    property Einheit: String read GetEinheit write SetEinheit;
    property Zahl: Double read GetZahl write SetZahl;
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TEinheitLbl]);
end;

function TEinheitLbl.GetCaption: String;
begin
   try
 Result := bCaption;
   except
 on EConvertError do
    Result := '#ERROR#';
   end;
end;

procedure TEinheitLbl.SetCaption(S: String);
begin
 bCaption := S;
end;

procedure TEinheitLbl.SetZahl(D: Double);
begin
 bZahl := D;
 bCaption := FloatToStr(bZahl)+' '+bEinheit;
end;

procedure TEinheitLbl.SetEinheit(S: String);
begin
 bEinheit := S;
 bCaption := FloatToStr(bZahl)+' '+bEinheit;
end;

function TEinheitLbl.GetEinheit: String;
begin
   try
 Result := bEinheit;
   except
 on EConvertError do
    Result := '#ERROR#';
   end;
end;

function TEinheitLbl.GetZahl: Double;
begin
   try
 Result := bZahl;
   except
 on EConvertError do
    Result := 0;
   end;
end;

end.
Das ist mein TEinheitLbl.

Bitte helft mir!

Sharky 3. Mai 2004 10:52

Re: LabelCompo zum Darstellen einer Zahl+Einheit
 
Hei F.W.,

wo setzt Du denn die Eigenschaft caption von TLabel?

Muetze1 3. Mai 2004 11:05

Re: LabelCompo zum Darstellen einer Zahl+Einheit
 
Moin!

Und warum definierst du noch eine Caption ? Du leitest ja von TLabel und nicht von TCustomLabel ab und somit hast du schon eine Property Caption die du überschreibst und neu definierst, aber wozu? Im Normalfall kann die doch sogar versteckt bleiben, da die Caption sich immer aus deinen 2 neuen Properties zusammensetzt.

MfG
Muetze1

F.W. 3. Mai 2004 12:28

Re: LabelCompo zum Darstellen einer Zahl+Einheit
 
Mit der Caption ist das so, die wollte ich erst nochmal mit hinschreiben, um eine NurLesenEigenschaft aus ihr zu machen, aber irgendwann ist mir aufgefallen, das ich dann nichtmal die zwei anderen in sie reinschreiben kann.

Wie gesagt, da sind garantiert mehr als 10 Sachen falsch, aber ich brings nicht mehr richtig!

So please help!

F.W. 3. Mai 2004 13:16

Re: LabelCompo zum Darstellen einer Zahl+Einheit
 
Ach! Is ja ganz klar, dass da nix mehr angezeigt wird, wenn ich Caption neu definiere! Ich hab jetzt alles was mit der property Caption zusammenhängt weggemacht (außer das gleichsetzen der Caption beim Ändern der zwo neuen Werte)

Aber trotzdem danke!


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