TEdit Feld funktioniert nur unter Windows
-
- Beiträge: 3
- Registriert: Mo 4. Aug 2025, 08:57
TEdit Feld funktioniert nur unter Windows
Hallo zusammen,
ich bin ein Wiedereinsteiger und habe daher noch nicht so viel Erfahrung mit Lazarus. Ich habe vor Jahren mal Delphi programmiert....
Nun zu meinem Problem:
Ich habe ein Programm in Lazarus unter Windows geschrieben, das auch einwandfrei unter Windows kompiliert und läuft.
Soweit so gut. Jetzt habe ich die Quellen unter Linux Mint in Lazarus geladen und kompiliert. Das Programm kompiliert und startet problemlos.
Aber die im Programm enthaltenen Editboxen (TEdit) zeigen ein merkwürdiges Verhalten:
Man kann den Inhalt der Editboxen zur Programmlaufzeit ändern und die Daten werden (kann man im Debugger sehen) auch gelesen und weiter verarbeitet. Wenn man aber nun den Wert aus dem Code heraus ändern möchte ( Edit1.Text := 'tralala'; ) dann wird der Wert nicht in der GUI angezeigt.
Ich habe dann mal einen neuen Button eingefügt und im OnClick-Event den Wert gesetzt - geht nicht.
Dann habe ich eine neue EditBox erstellt und deren Text Member via OnClick geändert - GEHT!
Kann mir jemand sagen was da falsch ist? Gerne stelle ich auch das Projekt zur Verfügung.
Viele Grüße
Dominik
ich bin ein Wiedereinsteiger und habe daher noch nicht so viel Erfahrung mit Lazarus. Ich habe vor Jahren mal Delphi programmiert....
Nun zu meinem Problem:
Ich habe ein Programm in Lazarus unter Windows geschrieben, das auch einwandfrei unter Windows kompiliert und läuft.
Soweit so gut. Jetzt habe ich die Quellen unter Linux Mint in Lazarus geladen und kompiliert. Das Programm kompiliert und startet problemlos.
Aber die im Programm enthaltenen Editboxen (TEdit) zeigen ein merkwürdiges Verhalten:
Man kann den Inhalt der Editboxen zur Programmlaufzeit ändern und die Daten werden (kann man im Debugger sehen) auch gelesen und weiter verarbeitet. Wenn man aber nun den Wert aus dem Code heraus ändern möchte ( Edit1.Text := 'tralala'; ) dann wird der Wert nicht in der GUI angezeigt.
Ich habe dann mal einen neuen Button eingefügt und im OnClick-Event den Wert gesetzt - geht nicht.
Dann habe ich eine neue EditBox erstellt und deren Text Member via OnClick geändert - GEHT!
Kann mir jemand sagen was da falsch ist? Gerne stelle ich auch das Projekt zur Verfügung.
Viele Grüße
Dominik
Re: TEdit Feld funktioniert nur unter Windows
Keine Ahnung.
Gibt bei so etwas immer die Version an, die du benutzt:
IDE Menü: "Hilfe" -> "Über Lazarus" -> Rechtsklick (oder unten links): "Versionsinformationen in die Zwischenablage kopieren".
Sieht dann z.B. so aus: "Lazarus 4.99 (rev main_4_99-2443-gac701e3db0) FPC 3.2.2 x86_64-linux-gtk2".
Wayland oder X11 könnte u.U. auch von Bedeutung sein.
Gibt bei so etwas immer die Version an, die du benutzt:
IDE Menü: "Hilfe" -> "Über Lazarus" -> Rechtsklick (oder unten links): "Versionsinformationen in die Zwischenablage kopieren".
Sieht dann z.B. so aus: "Lazarus 4.99 (rev main_4_99-2443-gac701e3db0) FPC 3.2.2 x86_64-linux-gtk2".
Wayland oder X11 könnte u.U. auch von Bedeutung sein.
-
- Beiträge: 3
- Registriert: Mo 4. Aug 2025, 08:57
Re: TEdit Feld funktioniert nur unter Windows
Lazarus Version 3.0
FPC Version 3.2.2
FPC Version 3.2.2
Re: TEdit Feld funktioniert nur unter Windows
Warum machst du es nicht so, wie ich es dir oben ausführlich beschrieben habe (Versionsinformationen in die Zwischenablage kopieren")?
Da kommt nämlich noch das Widgetset mit (z.B. GTK2, Qt5...).
Wayland vs X11 hast du auch nicht beantwortet.
Und lade doch mal das aufs Wesentliche reduzierte Projekt hoch.
-
- Beiträge: 3
- Registriert: Mo 4. Aug 2025, 08:57
Re: TEdit Feld funktioniert nur unter Windows
Hi Theo,
sorry habe das Problem gefunden obgleich ich es nicht verstehe.
Ich hatte NumbersOnlly = true gesetzt unter Windows. Das scheint unter Windows auch zu funktionieren wenn es Kommazahlen sind aber unter Linux nicht mehr.
Da muss dieses Attribut auf False gestellt sein dann gehts. Scheinbar stört der Punkt in der Kommazahl.
P.S.: Ich habe die Pakete aus meinem Linux Paketmanager deinstalliert und die aktuellen von der Lazarus-Seite installiert sind viel aktueller. Meine Version schien mehr doch sehr alt....
Versionsinfos aktuell:
Lazarus 4.2 (rev Unknown) FPC 3.2.2 x86_64-linux-gtk2
Wayland oder X11 weiß ich nicht. Wie findet man das raus ? Ist im Moment Linux Mint Xia 22.1
Viele Grüße
Dominik
sorry habe das Problem gefunden obgleich ich es nicht verstehe.
Ich hatte NumbersOnlly = true gesetzt unter Windows. Das scheint unter Windows auch zu funktionieren wenn es Kommazahlen sind aber unter Linux nicht mehr.
Da muss dieses Attribut auf False gestellt sein dann gehts. Scheinbar stört der Punkt in der Kommazahl.
P.S.: Ich habe die Pakete aus meinem Linux Paketmanager deinstalliert und die aktuellen von der Lazarus-Seite installiert sind viel aktueller. Meine Version schien mehr doch sehr alt....
Versionsinfos aktuell:
Lazarus 4.2 (rev Unknown) FPC 3.2.2 x86_64-linux-gtk2
Wayland oder X11 weiß ich nicht. Wie findet man das raus ? Ist im Moment Linux Mint Xia 22.1
Viele Grüße
Dominik
Zuletzt geändert von dominikgs31121981 am Mo 4. Aug 2025, 13:23, insgesamt 1-mal geändert.
Re: TEdit Feld funktioniert nur unter Windows
NumbersOnly ist ein total verkorkstes Property aus Delphi. Wenn es auf true ist, ist nur die Eingabe von "Ziffern", also '0=..'9' erlaubt, kein Minus-Zeichen, kein Dezimalkomma/-punkt, kein "E" für Exponent, also von wegen "Number"... Man hätte das besser "DigitsOnly" oder "NumericDigitsOnly" nennen sollen... Das unterschiedliche Verhalten zwischen Windows und Linux (dass man per Code einen "Nicht-Digits"-Text zuweisen kann) könnte man zwar als Bug melden, aber ich würde mich eher dafür stark machen, dann gleich diesen Unsinn aus den published Properties zu entfernen.
Wenn du nur eine Eingabe von Zahlen erlauben willst, ist vielleicht TSpinEdit (für Integer) oder TFloatSpinEdit (für Floats) besser geeignet. Oder gleich TSpinEditEx oder TFloatSpinEditEx, die zusätzliche Properties haben, z.B. UpDownVisible um die Up/Down-Buttons auszublenden, so dass sich das Edit überhaupt nicht mehr von einem normalen Edit unterscheidet.
Wenn du nur eine Eingabe von Zahlen erlauben willst, ist vielleicht TSpinEdit (für Integer) oder TFloatSpinEdit (für Floats) besser geeignet. Oder gleich TSpinEditEx oder TFloatSpinEditEx, die zusätzliche Properties haben, z.B. UpDownVisible um die Up/Down-Buttons auszublenden, so dass sich das Edit überhaupt nicht mehr von einem normalen Edit unterscheidet.
Zuletzt geändert von wp_xyz am Mo 4. Aug 2025, 14:20, insgesamt 1-mal geändert.
Re: TEdit Feld funktioniert nur unter Windows
Da steht recht viel dazu in der Hilfe:dominikgs31121981 hat geschrieben: Mo 4. Aug 2025, 13:22 Sorry habe das Problem gefunden obgleich ich es nicht verstehe.
Ich hatte NumbersOnlly = true gesetzt unter Windows. Das scheint unter Windows auch zu funktionieren wenn es Kommazahlen sind aber unter Linux nicht mehr.
Da muss dieses Attribut auf False gestellt sein dann gehts. Scheinbar stört der Punkt in der Kommazahl.
Indicates if the edit control accepts numeric values only.
——————————————————
NumbersOnly is a Boolean property which controls whether Text is limited to characters
which represent numeric digits. The default value for the property is False, and
allows any character valid for the type to be entered. When set to True, only the
characters '0'..'9' are accepted in Text. '+', '-', ',', and '.' are not numeric
digits.
Changing the property value causes the widgetset class to be notified when a handle
has been allocated for the control.
NumbersOnly is used in CreateParams to include the ES_NUMBER edit style in the creation
parameters for the control when set to True.
NumbersOnly is not supported on all platform for the LCL; GTK 2 does not support
the property.
Versions of Windows prior to Windows 95 did not enforce the ES_NUMBER style flag.
It could be specified, but still allowed any value to be manually entered into the
edit control. Some version of Windows allowed copy (Ctrl+C) and paste (Ctrl+V) to
be used to insert non-numeric values - even when NumbersOnly is set to True.
For inputs that require both numeric and punctuation digits, use one of the keyboard
event handlers like OnKeyPress or OnKeyDown to filter values as they are entered
into a control. Or, use TMaskEdit which supports using an edit mask for the input
values.
Deshalb habe ich auch nach dem Widgetset gefragt.
EDIT: wp_xyz hat natürlich recht, diese Eigenschaft sollte man wohl besser vergessen.
z.B . auf der Shell:dominikgs31121981 hat geschrieben: Mo 4. Aug 2025, 13:22 Wayland oder X11 weiß ich nicht. Wie findet man das raus ? Ist im Moment Linux Mint Xia 22.1
Code: Alles auswählen
echo $XDG_SESSION_TYPE
-
- Beiträge: 7008
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: TEdit Feld funktioniert nur unter Windows
So nebenbei kann das Forum nicht richtig zählen. dominikgs31121981 hat hier 3 Beiträge gemacht, aber das Forum zeigt nur 2 an.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 3
- Registriert: Mo 4. Aug 2025, 08:57
Re: TEdit Feld funktioniert nur unter Windows
Danke euch allen für die erhellenden Infos.
Am Ende war es banal, aber man ist schon überrascht wenn sich ein Programm dann unter Linux anders verhält als unter Windows.
Ich werde mir die TSpinEdit Klassen mal anschauen vielleicht sind das gute Alternativen.
Lazarus benutze ich hauptsächlich um mir kleine Hilfs/Berechnungstools zu bauen. Hauptberuflich bin ich eigentlich Elektronikentwickler.
Danke an alle und viele Grüße
Dominik
Am Ende war es banal, aber man ist schon überrascht wenn sich ein Programm dann unter Linux anders verhält als unter Windows.
Ich werde mir die TSpinEdit Klassen mal anschauen vielleicht sind das gute Alternativen.
Lazarus benutze ich hauptsächlich um mir kleine Hilfs/Berechnungstools zu bauen. Hauptberuflich bin ich eigentlich Elektronikentwickler.
Danke an alle und viele Grüße
Dominik