Label formatieren

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Paulifan1000
Beiträge: 42
Registriert: Mo 27. Aug 2012, 20:23
OS, Lazarus, FPC: Windows 10, L 1.4.4 FPC 2.6.4
CPU-Target: 32Bit 64Bit
Wohnort: Hamburg
Kontaktdaten:

Label formatieren

Beitrag von Paulifan1000 »

Moin,

ich habe mich mit der Programmierung eines Netto -> Brutto Rechners beschäftigt.

soweit bin ich bisher gekommen:
Bild

Code: Alles auswählen

  k:= preis.value;
  i:= k*0.19;
  i:= RoundTo(i, -2);
  ends:= i+k;
  ends:= RoundTo(ends, -2);
  Netto.caption:=('Netto: '+floattostr(preis.value)+'€');
  MwSt.caption:=('Mehrwertsteuer: '+floattostr(i)+'€');
  Brutto.caption:=('Brutto: '+floattostr(ends)+'€'); 
Ich möchte aber die 3 Labels die Netto, MwSt und Brutto angeben schöner formatieren. Es soll ungefähr so aussehen:

Bild

Kann mir eventuell jemand einen Tipp geben?
Sei immer du selbst
Ausser du kannst ein Einhorn sein
Dann sei ein Einhorn

wp_xyz
Beiträge: 5175
Registriert: Fr 8. Apr 2011, 09:01

Re: Label formatieren

Beitrag von wp_xyz »

  • Trenne jede Zeile in zwei Labels auf, eins für die Beschriftung, eins für den Wert.
  • Setze "Alignment" aller Labels auf "taRightJustify"
  • Markiere die Labels, die untereinander stehen sollen, mit SHIFT-Click und wähle im Kontextmenü "Ausrichten" / "Waagrecht" / "Rechte Seiten"
  • Lasse zwischen Beschriftung und Wert ausreichend viel Platz (oder schreibe Code, um die Wert-Labels an die Beschriftung anschließen zu lassen - siehe unten).
  • Bei den Werten: verankere die rechten Seiten mit dem rechten Formularrand, d.h. setze unter "Anchors" das Häkchen bei "akRight" und entferne das bei "akLeft".
  • Für die Umwandlung der Zahlen in Strings, nimm nicht die Funktion FloatToStr, sondern z.B. FormatFloat:

    Code: Alles auswählen

      NettoWert.Caption := FormatFloat('#,##0.00€', FloatSpinEdit1.Value); 
    Hier werden immer zwei Dezimalstellen und bei Werten >= 1000 ein Tausendertrenner angezeigt.
Und hier ist der Code für die rechtsbündige Platzierung der Wert-Labels neben den Beschriftungslabels, wobei verhindert wird, dass ein Wertlabel in die Beschriftung hineinragt (die oben erwähnte Verankerung der Wertlabels am rechten Formularrand ist hier nicht nötig):

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
const
  MwSt = 0.19;
  Abstand = 16;
var
  x: Integer;
begin
  NettoWertLabel.Caption := FormatFloat('0.00 €', FloatSpinEdit1.Value);
  MWStWertLabel.Caption := FormatFloat('0.00 €', FloatSpinEdit1.Value * MwSt);
  BruttoWertLabel.caption := FormatFloat('0.00 €', FloatSpinEdit1.value * (1 + MwSt));
 
  // rechter Rand des längsten Wert-Labels
  x := BruttoTextLabel.Left + BruttoTextLabel.Width + Abstand + BruttoWertLabel.Width;
  BruttoWertLabel.Left := x - BruttoWertLabel.Width;
  MWStWertLabel.Left := x - MWStWertLabel.Width;
  NettoWertLabel.Left := x - NettoWertLabel.Width;
end;  

Paulifan1000
Beiträge: 42
Registriert: Mo 27. Aug 2012, 20:23
OS, Lazarus, FPC: Windows 10, L 1.4.4 FPC 2.6.4
CPU-Target: 32Bit 64Bit
Wohnort: Hamburg
Kontaktdaten:

Re: Label formatieren

Beitrag von Paulifan1000 »

Merci, werde ich morgen ausprobieren.
Sei immer du selbst
Ausser du kannst ein Einhorn sein
Dann sei ein Einhorn

Antworten