[Erledigt] TEdtit und TDBEdit rechtsbündige Ausgabe

Rund um die LCL und andere Komponenten
Antworten
MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

[Erledigt] TEdtit und TDBEdit rechtsbündige Ausgabe

Beitrag von MacWomble »

Was ich schmerzlich vermisse und mich wundere, dass es anderen nicht auch so geht:

Es gibt bei TEdit und TDBEdit kein Alignment, d.h. ich kann den Text nicht zentriert oder rechts ausgeben lassen.
Das sind meines Erachtens fundamentale Notwendigkeiten, sobald ich mit Zahlen arbeite.

Ja, mir ist bekannt, dass dies in Delphi auch nicht geht, aber muss deswegen Lazarus ebenso schlecht sein?
Immer wieder wird die Kompatibilität zu Delphi erwähnt, aber so wird da nie etwas innovatives entstehen, sondern Lazarus immer ein 'billiger' Abklatsch bleiben. Immer wieder wird darauf verwiesen, dass Delphi dies und das auch nicht kann. Ich finde das beschämend!
Besser sein als der teure Mitbewerber - dann gewinnt man auch mehr Anhänger!

Sorry, aber ich musste meinem Frust etwas Luft verschaffen :oops:

Oder habe ich nur mal wieder etwas übersehen?

PS: Ich weiche ungern zu anderen Komponenten aus, da dies das Programm aufbläht und unübersichtlicher macht. Da ich platformunabhängig bleiben möchte, ist es dann auch immer notwendig, weitere Komponenten im Blick zu behalten. Die Standardkomponenten sollten die notwendigsten Einstellungen beherrschen, und da gehört nun mal die Ausrichtung dazu.

Im übrigen trifft dies auch auf Displayformat zu, welches es ebenfalls nicht gibt!
Zuletzt geändert von MacWomble am Mo 29. Jan 2018, 11:10, insgesamt 2-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: TEdtit und TDBEdit rechtsbündige Ausgabe

Beitrag von gladio »

Bei TEdit findet sich bei mir sehr wohl im Objektinspektor Aligment für links, rechts, zentriert.
Bei DBEdit legt man das im Feldeditor der Datenbankkomponente fest.
Oder bin ich da völlig falsch?

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: TEdtit und TDBEdit rechtsbündige Ausgabe

Beitrag von MacWomble »

gladio hat geschrieben:Bei TEdit findet sich bei mir sehr wohl im Objektinspektor Aligment für links, rechts, zentriert.
Bei DBEdit legt man das im Feldeditor der Datenbankkomponente fest.
Oder bin ich da völlig falsch?

Danke, du hast recht.

Tatsächlich gibt es das in TEdit. Ich hatte aus Verzweiflung die Klasse von TDBEdit auf TEdit geändert, da war dann aber das Property nicht vorhanden.

Bei TDBEdit funktioniert das zwar über den Feldeditor, aber ich arbeite notwendigerweise auch mit dynamisch(temporär) erzeugten Abfragen und habe dort nicht die Möglichkeit die Felder im Feldeditor zu definieren. Manche Felder möchte ich aber auch im DBEdit anders dargestellt haben als z.B. im DBGrid (Bsp: Im Grid steht '123,45 €' im DBEdit soll nur '123,45' stehen.)

Wenn ich im DBGrid das Displayformat für eine Zelle erstelle, dann wird dies in den Feldeditor übertragen. Ein DBEdit übernimmt dann die für das DBGrid vorgenommene Einstellung. Dieses Verhalten ist nicht logisch (wenn bisweilen aber auch praktisch).
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: TEdtit und TDBEdit rechtsbündige Ausgabe

Beitrag von gladio »

Dynamisch habe ich eher wenig Datenqyellen zugewiesen.
Aber funktioniert sowas z.B. nicht:

Code: Alles auswählen

ZQKundenKNR.Alignment:=taRightJustify;

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: TEdtit und TDBEdit rechtsbündige Ausgabe

Beitrag von MacWomble »

Das habe ich nicht versucht. Inzischen habe ich die DBEdits durch Edits ersetzt.

Im Verlauf habe ich ein weiteres Problem. Berechnungen scheinen wirklich nicht einfach zu sein:

Code: Alles auswählen

 
// Summe und Abzug sind in der DB als Decimal
// Summe= 5495,42
// Das geht :
TEdit1.Text := FloatToStrF(qrySQL.FieldByName('Summe').AsFloat,ffNumber,12,2);
TEdit2.Text := FloatToStrF(qrySQL.FieldByName('Abzug').AsFloat,ffNumber,12,2);
 
// Das geht nur bis 999,99, dann kommt das Tausender-Trennzeichen ins Spiel ("5.495,42" is an invalid float.)
TEdit3.Text := FloatToStrF(StrToFloat(TEdit1.Text ) - StrTofloat( TEdit2.Text),ffNumber,12,2);


Wie realisert man so etwas?
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: TEdtit und TDBEdit rechtsbündige Ausgabe

Beitrag von gladio »

Code: Alles auswählen

 
TEdit1.Text :=FormatFloat('0.00', qrySQL.FieldByName('Summe').AsFloat);
TEdit2.Text :=FormatFloat('0.00', qrySQL.FieldByName('Abzug').AsFloat);
 
TEdit3.Text :=FormatFloat('0.00',((StrToFloat(TEdit1.Text ) - (StrTofloat( TEdit2.Text)));

ungetestet.

Ich würde da aber die Edit.Text in (Float)Variablen zuweisen und dann mit denen arbeiten.

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: TEdtit und TDBEdit rechtsbündige Ausgabe

Beitrag von MacWomble »

Danke, Klasse!

Das funktioniert einwandfrei. Die Tausender-Trennzeichen sind hier ohnehin störend, da der User die Felder editieren kann/muss.

Natürlich verwende ich normalerweise für Berechnungen direkt die Floats, aber in diesem speziellen Fall benötige ich eben die Lösung über die Edit.text.

Damit sind diese Probleme für mich abgeschlossen.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: [Erledigt] TEdtit und TDBEdit rechtsbündige Ausgabe

Beitrag von gladio »

Vielleicht kannst du damit etwas anfangen.
Einfache Eingabeüberprüfung auf Zahl mit Formatierung:

Code: Alles auswählen

procedure TForm.Edit3Exit(Sender: TObject);
var t:single;
begin
  if (TryStrToFloat(Edit3.Text, t)) and (t>0) then
        Edit3.Text:=FormatFloat('0.00' , StrToFloat(Edit3.Text))
  else
  begin
    Edit3.Text:=''; //oder irgenwas anderes
    Edit3.SetFocus;
  end;
end;

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: [Erledigt] TEdtit und TDBEdit rechtsbündige Ausgabe

Beitrag von Socke »

Funktionsaufrufe mit Nebeneffekten sollten in Bedinungen vermieden werden.
So sind die Ausdrücke 1 und 2 logisch äquvalent zueinander und der Compiler könnte die Reihenfolge der Auswertung frei wählen. Da er es aktuell nicht tut, funktioniert Audruck 1 aktuell.

Code: Alles auswählen

// Ausdruck 1
(TryStrToFloat(Edit3.Text, t)) and (t>0)
// Ausdruck 2
(t>0) and (TryStrToFloat(Edit3.Text, t))
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten