[Erledigt] TEdtit und TDBEdit rechtsbündige Ausgabe

Rund um die LCL und andere Komponenten

[Erledigt] TEdtit und TDBEdit rechtsbündige Ausgabe

Beitragvon MacWomble » 29. Jan 2018, 09:08 [Erledigt] TEdtit und TDBEdit rechtsbündige Ausgabe

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 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.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon gladio » 29. Jan 2018, 09:18 Re: TEdtit und TDBEdit rechtsbündige Ausgabe

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?
gladio
 
Beiträge: 95
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon MacWomble » 29. Jan 2018, 09:25 Re: TEdtit und TDBEdit rechtsbündige Ausgabe

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.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon gladio » 29. Jan 2018, 09:33 Re: TEdtit und TDBEdit rechtsbündige Ausgabe

Dynamisch habe ich eher wenig Datenqyellen zugewiesen.
Aber funktioniert sowas z.B. nicht:
Code: Alles auswählen
ZQKundenKNR.Alignment:=taRightJustify;
gladio
 
Beiträge: 95
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon MacWomble » 29. Jan 2018, 10:08 Re: TEdtit und TDBEdit rechtsbündige Ausgabe

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.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon gladio » 29. Jan 2018, 10:48 Re: TEdtit und TDBEdit rechtsbündige Ausgabe

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.
gladio
 
Beiträge: 95
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon MacWomble » 29. Jan 2018, 11:10 Re: TEdtit und TDBEdit rechtsbündige Ausgabe

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.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon gladio » 29. Jan 2018, 11:36 Re: [Erledigt] TEdtit und TDBEdit rechtsbündige Ausgabe

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;
gladio
 
Beiträge: 95
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon Socke » 29. Jan 2018, 13:50 Re: [Erledigt] TEdtit und TDBEdit rechtsbündige Ausgabe

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
Socke
 
Beiträge: 2555
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

porpoises-institution
accuracy-worried