2 Fehler im Programmablauf
Moderator: Moderatoren
2 Fehler im Programmablauf
Hallo und regnerische Grüße aus dem Allgäu
Ich hätte mal wieder 2 Fragen:
1 Frage: Habe in meinem Programm eine Checkbox die ich nicht editieren kann bzw. er kennt den Befehl editable:false oder true nicht, Gibt es hierfür eine andere Lösung? Ich muss diese Checkbox editieren können da sie mir aus der DB eine True/False abfrage zu bestimmten Kunden Infos macht und diese auch verändert werden sollen...
2 Frage: Habe eine Stundensatz Variable diese zeigt aber nur Ganzzahl an und keine Gleitkomma. Habe diesen Abschnitt mit dem Formdesigner angefertigt der ja hier den Befehl Transform verwendet. Kann ich die Variable vom Datentyp auch selbst verändern in dem generierten Function Code, weil iwie funktioniert das nicht. z.B. stdsatz As Integer oder Integer stdsatz...funktioniert leider nicht
Vielen Dank
Ich hätte mal wieder 2 Fragen:
1 Frage: Habe in meinem Programm eine Checkbox die ich nicht editieren kann bzw. er kennt den Befehl editable:false oder true nicht, Gibt es hierfür eine andere Lösung? Ich muss diese Checkbox editieren können da sie mir aus der DB eine True/False abfrage zu bestimmten Kunden Infos macht und diese auch verändert werden sollen...
2 Frage: Habe eine Stundensatz Variable diese zeigt aber nur Ganzzahl an und keine Gleitkomma. Habe diesen Abschnitt mit dem Formdesigner angefertigt der ja hier den Befehl Transform verwendet. Kann ich die Variable vom Datentyp auch selbst verändern in dem generierten Function Code, weil iwie funktioniert das nicht. z.B. stdsatz As Integer oder Integer stdsatz...funktioniert leider nicht
Vielen Dank
- Manfred
- Foren-Administrator
- Beiträge: 21248
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 211 Mal
- Danksagung erhalten: 71 Mal
Re: 2 Fehler im Programmablauf
Hi,
in dem Klassenbaum zu XbpCheckBox steht auch kein editable.. Hast Du es mal mit Enable() und disable() versucht?
in dem Klassenbaum zu XbpCheckBox steht auch kein editable.. Hast Du es mal mit Enable() und disable() versucht?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: 2 Fehler im Programmablauf
Hi,
ein SLE und ein MLE haben im Prinzip 3 Zustände:
1. Änderbar: SetEditable(.t.), enabled()
2. Read Only, aber markier- und scrollbar: SetEditable(.f.), enabled()
3. Nicht anwählbar (also gegraut): disabled()
bei einer checkbox gibt es nur 2 Zustände,
1. Änderbar: enabled()
2. Nicht änderbar: disbled()
Laut Windows ist ein SLE immer TEXT
den kann man formatieren: oSle:setData( str(...) oder Transform(...) ) wie man will, aber grundsätzlich bleibt es Text.
Die "Windowsmaskierung" wird nomalerweise im Style des controls (resource) definiert, aber das geht bei uns so nicht.
In der Wissensdatenbank habe ich aber verschiedene abgeleitete Klassen hinterlegt, die mit Datum und numerisch umgehen können.
http://www.xbaseforum.de/viewtopic.php? ... sle#p58259
oSle := HB_SLE_Zahl:new(...):create(...); oSle:setValue( 1132433.433 ) geht damit z.B.
Hier einige Parameter und Methoden (der Rest ist gleich mit XbpSle()):
ein SLE und ein MLE haben im Prinzip 3 Zustände:
1. Änderbar: SetEditable(.t.), enabled()
2. Read Only, aber markier- und scrollbar: SetEditable(.f.), enabled()
3. Nicht anwählbar (also gegraut): disabled()
bei einer checkbox gibt es nur 2 Zustände,
1. Änderbar: enabled()
2. Nicht änderbar: disbled()
Laut Windows ist ein SLE immer TEXT
den kann man formatieren: oSle:setData( str(...) oder Transform(...) ) wie man will, aber grundsätzlich bleibt es Text.
Die "Windowsmaskierung" wird nomalerweise im Style des controls (resource) definiert, aber das geht bei uns so nicht.
In der Wissensdatenbank habe ich aber verschiedene abgeleitete Klassen hinterlegt, die mit Datum und numerisch umgehen können.
http://www.xbaseforum.de/viewtopic.php? ... sle#p58259
oSle := HB_SLE_Zahl:new(...):create(...); oSle:setValue( 1132433.433 ) geht damit z.B.
Hier einige Parameter und Methoden (der Rest ist gleich mit XbpSle()):
Code: Alles auswählen
VAR MASKE // Maske wie für Transform(n, !!! )
VAR NurPositiv // Komma wird unterdrückt
VAR NurGanzzahl // Minuszeichen wird unterdrückt
VAR AutoMark // Überschreibenmarkierung bei SetInputFocus automatisch setzten ?
METHOD getValue // numerischen Wert abfragen
METHOD setValue // numerischen Wert setzen
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: 2 Fehler im Programmablauf
Man kann eine Checkbox dazu bringen, sich wie ein SLE zu verhalten, das nicht editierbar, aber "enabled" ist. Dazu verbiegt man einfach den Slot "SetInputFocus" und fängt dort ab, ob die Bedingungen dafür erfüllt sind, dass die Checkbox editiert werden kann. Ist das nicht der Fall, setzt man den Fokus einfach woanders hin, etwa auf das vorherige Control (das man sich dafür natürlich merken muss).
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: 2 Fehler im Programmablauf
Gegenfrage : hast du im Formdesigner den Assistenten für DBF Felder benutzt ?Flymoon hat geschrieben:Ich hätte mal wieder 2 Fragen:
der "sollte" dir aus den gewählten Feldern die "richtigen" o:Datalink Codeblöcke erzeugen.
gruss by OHR
Jimmy
Jimmy
Re: 2 Fehler im Programmablauf
Danke für eure Antworten
Und die Std Satz Variable erstellt der Assistent folgendes: oXbp2:dataLink := {|x| IIf( PCOUNT()==0, Transform( MST_SATZ, '@N' ), MST_SATZ := Val(x) ) }
Mein Code: oXbp2:dataLink := {|x| IIf( PCOUNT()==0, str( MST_SATZ, 2), MST_SATZ := Val(x) ) } funktioniert aber leider nicht! Er macht mir keine Kommazahlen
Lg Malcom
ja ich habe den Assistenten benutzt für die Felder, aber Problem ist er macht mir aus boolischen Werten in der Tablle ne Checkbox automatisch(könnte ja eigl auch ein Textfeld sein mit True/False, denke aber mal das es vom Assistent so gewollt ist das er eine Checkbox macht anstatt ein Textfeld in diesem Fall.AUGE_OHR hat geschrieben:Gegenfrage : hast du im Formdesigner den Assistenten für DBF Felder benutzt ?
der "sollte" dir aus den gewählten Feldern die "richtigen" o:Datalink Codeblöcke erzeugen.
Und die Std Satz Variable erstellt der Assistent folgendes: oXbp2:dataLink := {|x| IIf( PCOUNT()==0, Transform( MST_SATZ, '@N' ), MST_SATZ := Val(x) ) }
Mein Code: oXbp2:dataLink := {|x| IIf( PCOUNT()==0, str( MST_SATZ, 2), MST_SATZ := Val(x) ) } funktioniert aber leider nicht! Er macht mir keine Kommazahlen
Lg Malcom
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: 2 Fehler im Programmablauf
YUP . wenn du per Keyboard "Y" / "N" haben willst kannst du das im oCheckBox:Keyboard Callback Slot machen.Flymoon hat geschrieben:ja ich habe den Assistenten benutzt für die Felder, aber Problem ist er macht mir aus boolischen Werten in der Tablle ne Checkbox automatisch(könnte ja eigl auch ein Textfeld sein mit True/False, denke aber mal das es vom Assistent so gewollt ist das er eine Checkbox macht anstatt ein Textfeld in diesem Fall.
mit mit STR(n,2) gibt es keine Dezimalstellen und deshalb kein Komma ... STR(n,10,2) wäre es wenn.Flymoon hat geschrieben:Und die Std Satz Variable erstellt der Assistent folgendes: oXbp2:dataLink := {|x| IIf( PCOUNT()==0, Transform( MST_SATZ, '@N' ), MST_SATZ := Val(x) ) }
Mein Code: oXbp2:dataLink := {|x| IIf( PCOUNT()==0, str( MST_SATZ, 2), MST_SATZ := Val(x) ) } funktioniert aber leider nicht! Er macht mir keine Kommazahlen
aber wenn dir der Formdesigner den "richtigen" Datalink gibt warum ändern ?
gruss by OHR
Jimmy
Jimmy