TTimeEdit Linux keine Minutenauswahl möglich

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von six1 »

Hi,
kann bitte jemand bestätigen, ob die Minuten Auswahl bei einem TTimeEdit (Misc) funktioniert, oder eben auch nicht... :)

Unter Windows verhält sich diese Komponente ok, unter Linux kann man weder den Focus in den Minuten verändern, noch Minuten auswählen.


Danke
Gruß, Michael

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

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von wp_xyz »

Kann ich nicht bestätigen. Hab Lubuntu und Manjaro Linux getestet.

Übrigens: du sprichst von "Minuten-Auswahl". TTimeEdit hat nur einen normal Cursor wie in jedem TEdit, der überall hin platziert werden kann. Meinst du etwa das Verhalten von TDateTimePicker, bei dem nach einem Klick in den Minuten-Bereich alle Minuten markiert sind und mit den Pfeiltasten oder dem Mausrad rauf- und runtergefahren werden können? TTimeEdit kann das nicht.

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von six1 »

Relativ einfach, was ich mir vorstelle:

Ich klicke auf das Uhr Symbol und dann auf einen Minuten Eintrag und erwarte, dass die Minuten/Stunden übernommen werden und sich die Auswahl schließt.
Geht aber nicht. Der hinterlegte dunkelgrauere Focus verschiebt sich nicht beim Anklicken und eine Klicken auf ein Minutenfeld hat NULL Auswirkung.

Image2.jpg
Image2.jpg (9.61 KiB) 2740 mal betrachtet
Gruß, Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von m.fuchs »

Doppelklick auf die Minute schließt und übernimmt die Werte.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von six1 »

ja, so hätte ich mir das auch vorgestellt... geht aber eben NICHT! Darum frage ich ja hier mal leise nach... :oops:
Ich habe auch einen neuen TTimeEdit aufs Formular geworfen um auszuschließen, dass ich etwas falsch eingestellt habe...
Die Minuten sind praktisch gesperrt und reagieren überhaupt nicht.

LAZ 2.0.6 FPC 3.0.4 Debian10/x86


ach ja und: bei den Stunden funktioniert es!
Gruß, Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von m.fuchs »

six1 hat geschrieben:Geht aber nicht. Der hinterlegte dunkelgrauere Focus verschiebt sich nicht beim Anklicken und eine Klicken auf ein Minutenfeld hat NULL Auswirkung.

Das ist dann in der Tat ein Bug. Was passiert wenn du ein neues, leeres Projekt machst und da nur eine TTimeEdit drauf packst?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von six1 »

:shock: ok, jetzt habe ich keine Ahnung, woher das kommt.

Mit einem neuen Projekt mit TTimeEdit drauf geht es...
In meinem Projekt nicht. (hat mal locker 40.000 Zeilen...)

also gehe ich mal auf die Suche... :mrgreen:
Gruß, Michael

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von six1 »

Das ist wirklich seltsam:
Ich habe drei von diesen TTimeEdit in der Form.
Alle drei bekommen nur Werte aus einer Ini Datei bzw beim Schließen der Form werden deren Werte in die Ini geschrieben.
Nirgendwo im Programm ist ein weiterer Bezug zu diesen Komponenten; auch kein findcomponent...
In der Uses Klausel habe ich EditBtn schon weit nach oben geschoben; schiere Verzweiflungstat :)
Gruß, Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von m.fuchs »

Kopie vom Programm machen und nach und nach alle anderen Komponenten und Quellcode entfernen. Kann ja auch sein, dass irgendetwas den Fokus klaut oder so.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von six1 »

:shock: da sind über 900 Komponenten... no go

Ich glaube da eher daran, dass ich eine eigene Uhrzeitauswahl stricke 8)
Gruß, Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von m.fuchs »

Über 900 Komponenten auf einem Form? Nimm es mir nicht übel, aber dass dann etwas schiefgeht ist nicht so verwunderlich.
Eine eigene Zeiteingabemethode mag dann funktionieren, aber ich hätte immer Sorge, dass irgendwas anderes im Hintergrund lauert.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von Warf »

six1 hat geschrieben::shock: da sind über 900 Komponenten... no go

Das sind vielleicht ein bisschen viele. Wenn jede komponente mit jeder interagieren kann (was sie ja können, da es für jede komponente a und a' mindestens die interaktion a.focused -> a'.focused gibt, wo wir eh vom focus reden) gilt dann das die anzahl an möglichen interaktionen exponentiell wächst.
Einfache induktion, mit 0 komponenten hast du 1 state. Wenn du jetzt eine komponente C hinzufügst, und wir nur die fukus beziehung betrachten, kommt für jeden bisherigen state S der state S->C.focused hinzu, also erhöht sich die anzahl der states um genau das was sie vorher war, also um faktor 2. Also #S(#C + 1) = #S(#C) * 2. Mit dem fakt das wir mit 1 state anfangen ergibt sich also #S(#C) = 2 ^ #C.
Für 900 komponenten also 2^900 = 8.452712e+270, das ist ne 8 mit 270 nullen hinten dran. Das ist die anzahl der fehlerquellen durch so viele komponenten die miteinander in beziehung stehen (allein da durch das sie auf der selben form sitzen)

Es hat einen grund warum man normalerweise versucht software komponenten möglichst klein und abgekapselt zu haben. Z.B. durch subkomponenten. Das einfachste in Lazarus dafür ist Frames mit sehr schmalen schnittstellen. Man denkt da oft nicht so drüber nach, aber Code wird exponentiell komplizierter (und damit auch fehleranfälliger) je größer er wird. Der einzige weg das in den griff zu bekommen ist modularisierung. Zwei module haben nur halb so viel komplexität wie ein doppelt so großes, obwohl die anzahl an Code Zeilen identisch sein mag, oder bei den zwei modulen sogar mehr ist.

Aber, zum fehler finden musst du ja nicht jede komponente einzeln löschen. Binärsuche ist das Zauberwort. Kopiere dein projekt, und lösche die hälfte aller komponenten raus. Tritt der fehler nicht mehr auf stell den vorrigen state wieder her und lösch die andere hälfte raus. In der hälfte die über bleibt machst du dann das selbe. Im ersten schritt hast du dann nur noch 450 komponenten, im zweiten 225, im dritten 112, im vierten 56 und so weiter. Nach 10 schritten bist du spätestens durch
Normalerweise sind aber auch komponenten nicht so das problem, sondern wahrscheinlich eher der code. Da kannst du aber genauso vorgehen, isolier die Form in ein separates projekt, und dann beginn indem du die hälfte der Funktionen löschst, und mach dann binärsuche wie mit komponenten beschrieben

six1 hat geschrieben:Ich glaube da eher daran, dass ich eine eigene Uhrzeitauswahl stricke 8)

Damit dir in ein paar wochen das was anderes um die ohren fliegt was die selbe ursache hat?

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: TTimeEdit Linux keine Minutenauswahl möglich

Beitrag von six1 »

Ok, soweit war mir das schon klar...
Das Projekt hat aber ansonsten keine "ungewöhnliche Erscheinungen" oder "Verselbststädigungen". Alles läuft wie vorgesehen.
Ich habe auch ein Exception Catch auf die Application und kann keine Fehler festhalten.
Es handelt sich um ein Cross Projekt, welches ich unter X32, X64, Win32, Win64 und Arm32 kompiliere.
Die Probleme tauchen lediglich bei Linux auf...
Gruß, Michael

Antworten