[gelöst] Rechnen im Dialog?
Moderator: Moderatoren
[gelöst] Rechnen im Dialog?
Hallo zusammen,
ist es möglich, in einem Dialog zu rechen und das Ergebnis in einem Textfeld auszugeben?
Ich hänge einmal nachfolgende Grafik ein.
In Beginn und Ende möchte ich die Anfangs- und Endzeiten der Tätigkeit eintragen, im Feld Zeitbetrag soll das Ergebnis der Subtraktion Endzeit-Anfangszeit stehen und dann nach Calc übernommen werden.
Hat da jemand eine Lösung?
Gruß
Werner
ist es möglich, in einem Dialog zu rechen und das Ergebnis in einem Textfeld auszugeben?
Ich hänge einmal nachfolgende Grafik ein.
In Beginn und Ende möchte ich die Anfangs- und Endzeiten der Tätigkeit eintragen, im Feld Zeitbetrag soll das Ergebnis der Subtraktion Endzeit-Anfangszeit stehen und dann nach Calc übernommen werden.
Hat da jemand eine Lösung?
Gruß
Werner
- Dateianhänge
-
- Dialog.jpg (28.07 KiB) 1212 mal betrachtet
Zuletzt geändert von wega am Sa, 27.12.2008 21:07, insgesamt 3-mal geändert.
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Rechnen im Dialog?
Klar ist das möglich.wega hat geschrieben:ist es möglich, in einem Dialog zu rechen und das Ergebnis in einem Textfeld auszugeben?
Wie hättest Du es gerne?
Dialog ist im Editor entworfen? Du hast zwei TimeFields zur Eingabe?
Einfachste Möglichkeit ist eine weitere Schaltfläche "Zeit berechnen", welche mit einer SUB verbunden ist, die die Werte aus den controls holt, rechnet und das Ergebnis im Textfeld ausgibt.
Automatisches Berechnen geht mittels listener (beim Verlassen eines der Zeitfelder), deren SUB (nach Prüfung auf Eingaben) das Gleiche leistet.
Du hast Andrews Makrodokument vorliegen?
(Paragraph 8.6 in meiner alten Ausgabe von 2003, "Set the event listener for a control"; Achtung: Beispiel ist für eine form, funktioniert aber für Dialoge entsprechend)
Und XRay zum Untersuchen der Objekte und deren Eigenschaften installiert?
Viel Erfolg!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Rechnen im Dialog?
Hallo Werner,
man könnte das Berechnen auch mit einem Druck auf die Enter-Taste auslösen.
Ein Beispiel ist beigefügt.
An Deiner Stelle würde ich das mit vier NumericFields lösen um die Eingabe des ":" zu vermeiden.
In etwa so:
[NumericField1] ":" [NumericField2]_________[NumericField3] ":" [NumericField4]
Oder aber Du startest die Berechnung im letzten NumericField über das Ereignis "Text modifiziert".
Dann geht es auch ohne den Listener.
Hilft das weiter?
Jürgen
man könnte das Berechnen auch mit einem Druck auf die Enter-Taste auslösen.
Ein Beispiel ist beigefügt.
An Deiner Stelle würde ich das mit vier NumericFields lösen um die Eingabe des ":" zu vermeiden.
In etwa so:
[NumericField1] ":" [NumericField2]_________[NumericField3] ":" [NumericField4]
Oder aber Du startest die Berechnung im letzten NumericField über das Ereignis "Text modifiziert".
Dann geht es auch ohne den Listener.
Hilft das weiter?
Jürgen
- Dateianhänge
-
- Listener-Enter_Taste.ods
- (10.22 KiB) 64-mal heruntergeladen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Rechnen im Dialog?
Bei nummerischen Felder muss man die Wertebereiche (0-23h, 0-59) vorgeben, und die ZEIT zum Rechnen zusammensetzen: ich bleibe bei meiner Empfehlung ein TimeField-control zu nehmen (Drehfeld, evtl. Min./Max.-Zeit einstellbar; Zeitraum leicht berechenbar).turtle47 hat geschrieben:Oder aber Du startest die Berechnung im letzten NumericField über das Ereignis "Text modifiziert".
Dann geht es auch ohne den Listener.
Das "Text modifiziert"-Ereignis wird bei jedem Tastenanschlag im control ausgelöst - besser ist "Fokusverlust".
Eine Eingabe im "Start"-Feld könnte dann auch schon das "Ende"-Feld vorbelegen (+8,5 Stunden?!)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Rechnen im Dialog?
Hallo zusammen,
bin endlich wieder an Bord und kann an meinem Programm weiterarbeiten.
Erst einmal vielen Dank für die hilfreichen anregungen.
Wenn ich den Anregungen fplge und die GetControll-Felder Date und Time verwende,
Wie bekomme ich denn deren Inhalt im richtigen Format lesbar in Calc angezeigt?
Bei der Datumsübergabe an Calc habe ich schon so meine Schwierigkeiten.
Da wird mir ein Wert übertragen, der mit dem eingegenem Datum eigentlich nicht zu tun hat.
Quellcode:
Ergebnis in Calc:
12.02.-8657
Wie muss eine Übergabe von Datum und Zeit an Calc richtig erfolgen?
Gruß
Werner
bin endlich wieder an Bord und kann an meinem Programm weiterarbeiten.
Erst einmal vielen Dank für die hilfreichen anregungen.
Wenn ich den Anregungen fplge und die GetControll-Felder Date und Time verwende,
Wie bekomme ich denn deren Inhalt im richtigen Format lesbar in Calc angezeigt?
Bei der Datumsübergabe an Calc habe ich schon so meine Schwierigkeiten.
Da wird mir ein Wert übertragen, der mit dem eingegenem Datum eigentlich nicht zu tun hat.
Quellcode:
Code: Alles auswählen
mySheet.getCellRangeByName("B" & End_Row).value = Dlg_Zeiterfassung.GetControl("DateF_datum").date
12.02.-8657
Wie muss eine Übergabe von Datum und Zeit an Calc richtig erfolgen?
Gruß
Werner
Re: Rechnen im Dialog?
Hallo Werner,
ich habe das für mich mal fogendermassen gelöst:
Viel Erfolg.
Jürgen
ich habe das für mich mal fogendermassen gelöst:
Code: Alles auswählen
Dim Dlg_Date,DateField1 as Object
dim myDate as String
Sub Call_Dlg_Date
DialogLibraries.loadLibrary("MyDate")
oForm = DialogLibraries.MyDate.Dlg_Date
Dlg_Date = CreateUnoDialog(oForm)
DateField1 = Dlg_Date.getControl("DateField1")
oDateFieldModel = Dlg_Date.Model.DateField1
oDateFieldModel.Text = date 'aktuelles Datum im Datefield anzeigen
Dlg_Date.execute()
End Sub
Sub Insert_Date1
oDoc = ThisComponent
oSheet = ThisComponent.CurrentController.getActiveSheet()
oZell = oSheet.getCellRangeByName("A1") 'Zelle anpassen
myDate = DateField1.text
oZell.Value= CDate(myDate)
'oZell.NumberFormat = 30 'Format 13.05.06
'oZell.NumberFormat = 31 'Format Sa 13.Mai 06
'oZell.NumberFormat = 32 'Format 05.06
'oZell.NumberFormat = 33 'Format 13.Mai
'oZell.NumberFormat = 34 'Format Mai
'oZell.NumberFormat = 35 'Format 2. Quartal 06
oZell.NumberFormat = 36 'Format 13.05.2006
'oZell.NumberFormat = 38 'Format Samstag, 13. Mai 2006
'oZell.NumberFormat = 39 'Format 13. Mai 06
Dlg_Date.endexecute()
end Sub
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Rechnen im Dialog?
Hallo Jürgen,
danke, das war der entscheidende Hinweis, jetzt geht es auch bei mir weiter.
Gruß
Werner
danke, das war der entscheidende Hinweis, jetzt geht es auch bei mir weiter.
Gruß
Werner
Re: Rechnen im Dialog?
hallo zusammen,
ich habe doch noch eine Frage zum Berechnen im Dialog.
die differenzzeit berechne ich wie folgt, nach dem die Eingabezelle de Focus verliert:
Daraufhin wird mir im "TimeF_zeitbetrag" Fenster auch der richtige berechnete Differenzwert angezeigt.
Aber mit
bekomme ich den angezeigten Wert nicht in die Calc übertragen. Dahin überträgt sich der Wert "00:00"
Was muß ich machen, damit sich die errechnete Differenzzeit nach Calc überträgt.
Gruß
Werner
ich habe doch noch eine Frage zum Berechnen im Dialog.
die differenzzeit berechne ich wie folgt, nach dem die Eingabezelle de Focus verliert:
Code: Alles auswählen
Sub zeitbetrag_rechnen
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time = Dlg_Zeiterfassung.GetControl("TimeF_ende").time - Dlg_Zeiterfassung.GetControl("TimeF_beginn").time
End Sub
Aber mit
Code: Alles auswählen
if Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time <> "" then
mySheet.getCellRangeByName("H" & End_Row).value = cdate(Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").text)
end if
Was muß ich machen, damit sich die errechnete Differenzzeit nach Calc überträgt.
Gruß
Werner
Re: Rechnen im Dialog?
hallo zusammen,
wie bekomme ich den Inhalt von:
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time
nach
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").text ?
mit Gruß
Werner
wie bekomme ich den Inhalt von:
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time
nach
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").text ?
mit Gruß
Werner
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Rechnen im Dialog?
wega hat geschrieben: Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time
nach
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").text ?
Durch Zuordnung:
Code: Alles auswählen
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").Time = _
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").Text
... ich frage mich aber: wozu?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Rechnen im Dialog?
Hallo Winfried,
erst einmal Danke für Deine Antwort.
Mit dem GetControl-Feld Time bereche ich die Differenz zwischen zwei Zeiten und gebe diese Diffrenz zur visuellen Kontrolle ebenfalls in einem GetControl-Feld aus. Hierzu Bild01.
Übertragen nach Calc wird aber das Ergebnis von Bild uebertragen_wird.
Folge ich Deiner Anweisung der Zuweisung erschein im berechneten GetControl-Feld das Ergebnis Bild02 und bei dem Versuch der Übernahme nach Calc die angezeigte Fehlermeldung.
Frage, wie kann ich das Ergebnis des GetControl-Feldes nach Calc übertragen?
Ich hoffe, dass ich meine Frage präzise genug gestellt habe.
mit Gruß
Werner
erst einmal Danke für Deine Antwort.
Mit dem GetControl-Feld Time bereche ich die Differenz zwischen zwei Zeiten und gebe diese Diffrenz zur visuellen Kontrolle ebenfalls in einem GetControl-Feld aus. Hierzu Bild01.
Übertragen nach Calc wird aber das Ergebnis von Bild uebertragen_wird.
Folge ich Deiner Anweisung der Zuweisung erschein im berechneten GetControl-Feld das Ergebnis Bild02 und bei dem Versuch der Übernahme nach Calc die angezeigte Fehlermeldung.
Frage, wie kann ich das Ergebnis des GetControl-Feldes nach Calc übertragen?
Ich hoffe, dass ich meine Frage präzise genug gestellt habe.
mit Gruß
Werner
- Dateianhänge
-
- Bild01.JPG (7.51 KiB) 912 mal betrachtet
-
- uebertragen_wird.jpg (2.28 KiB) 910 mal betrachtet
-
- Bild02.jpg (7.26 KiB) 911 mal betrachtet
Re: Rechnen im Dialog?
Hallo Winfried,
hie noch die Fehlermeldung.
Gruß
Werner
hie noch die Fehlermeldung.
Gruß
Werner
- Dateianhänge
-
- Fehlermeldung.jpg (11.15 KiB) 900 mal betrachtet
Re: Rechnen im Dialog?
Hallo Werner,
ganz so einfach ist das mit TimeField nicht. Ich habe dennoch etwas rausgefunden
und nach diesem Beitrag mal was zusammengebaut:
Bringt Dich das etwas weiter?
Jürgen
ganz so einfach ist das mit TimeField nicht. Ich habe dennoch etwas rausgefunden
und nach diesem Beitrag mal was zusammengebaut:
Code: Alles auswählen
Sub zeitbetrag_rechnen
Dim H As Long, M As Long, S As Long
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time = Dlg_Zeiterfassung.GetControl("TimeF_ende").time - Dlg_Zeiterfassung.GetControl("TimeF_beginn").time
oDoc = ThisComponent
oSheet = ThisComponent.CurrentController.getActiveSheet()
oZell = oSheet.getCellRangeByName("A1") 'Zelle anpassen
myTimeField = Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag")
mytime = myTimeField.time
H=Int(mytime/1000000)
M=Int(mytime/10000)-H*100
S=Int(mytime/100)-H*10000-M*100
TimeCtlFieldToTime=TimeSerial(H,M,S)
oZell.FormulaLocal = TimeCtlFieldToTime
End Sub
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Rechnen im Dialog?
Hallo Jürgen,
Danke, genau das ist die Lösung.
Da hätte ich mir aber glatt die Zähne ausgebissen.
Danke und ein frohes Weihnachtsfest an alle Forenteilnehmer
Gruß
Werner
Danke, genau das ist die Lösung.
Da hätte ich mir aber glatt die Zähne ausgebissen.
Danke und ein frohes Weihnachtsfest an alle Forenteilnehmer
Gruß
Werner
Re: Rechnen im Dialog?
Hallo zusammen,
mein dank an alle, die meine Lösungssuche unterstützt haben.
Hier die Datei, die jetzt dank eurer Hilfe funktioniert.
Vielleicht kann der eine oder andere aus diesem Forum auch etwas damit angangen.
Funktioniert unter OpenOffice.org 3.0
Bei früheren Versionen könnte es bei der Übergabe des GetControl-Time-Feldes Probleme geben.
Gruß
Werner
mein dank an alle, die meine Lösungssuche unterstützt haben.
Hier die Datei, die jetzt dank eurer Hilfe funktioniert.
Vielleicht kann der eine oder andere aus diesem Forum auch etwas damit angangen.
Funktioniert unter OpenOffice.org 3.0
Bei früheren Versionen könnte es bei der Übergabe des GetControl-Time-Feldes Probleme geben.
Gruß
Werner
- Dateianhänge
-
- Zeiterfassung.ods
- (38.55 KiB) 65-mal heruntergeladen