Taschenrechner

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Doc_Boom

Re: Taschenrechner

Beitrag von Doc_Boom »

Karolus hat geschrieben: Sa, 11.09.2021 22:08 Nicht unbedingt schwierig, aber du lernst doch nix wenn wir dir alles wohlgeformt hinschreiben, fehlen deinem ```Taschenrechner``` nicht ein paar Tasten zum Rechnen…? (oder zumindest um + - * / , ( ) in die Zelle einzugeben)
da möchte ich keine schaltflächen für. die sollen versteckt gerechnet werden. dazu habe ich auch eine idee wie ich sie lösen kann.
Stephan
********
Beiträge: 12317
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Taschenrechner

Beitrag von Stephan »

@Stephan Ich würde zunächst ausschliesslich mit .String arbeiten, dann kann man auch Operatoren wie +-/* auf die gleiche Weise einpflegen.
Das Umwandeln in eine …FormulaLocal könnte man dann dem bereits angefragtem 'enter'-button überlasssen.
mmh ... Die Operatoren würde ich mir lieber merken, aber für ein Komma wäre Dein Rat sinnvoll ... andererseits ... ich weiß garnicht was der Frager genau vorhat, das aber würde entscheiden ob, oder ob nicht, Operatoren in der Zelle sichtbar sein sollen.

Anmerkung: Es gelingt mir im Übrigen nicht die Zelle in den Edit-Modus zu bringen und dann alle Eingaben anzuhängen bis ENTER kommt.


Gruß
Stephan
Stephan
********
Beiträge: 12317
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Taschenrechner

Beitrag von Stephan »

Haben sie eventuell Noch eine Idee bezüglich der "Enter" Taste wie man das regeln könnte ?
einfach per Makrorekorder aufzeichnen:

Code: Alles auswählen

sub enter()
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

end sub
im KOnkreten hat dass auch den Vorteil das die Einstellung wohin der Fokus bei Enter springen soll (Extras-OPtionen-OpenOffice-Calc-Allgemein-"Eingabebestätigung setzt die SElection navh") automatisch richtig umgesetzt wird.


Gruß
Stephan
Stephan
********
Beiträge: 12317
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Taschenrechner

Beitrag von Stephan »

Ich hoffe du hast realisiert daß das python ist, in Basic musst du da schon die eine oder andere Stelle anpassen.
in Basic ginge das z.B. so:

Code: Alles auswählen

Sub Ziffer(event)
	With ThisComponent.CurrentSelection
		.FormulaLocal = .string & event.source.model.label		
	End With
End Sub

Gruß
Stephan
Stephan
********
Beiträge: 12317
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Taschenrechner

Beitrag von Stephan »

Doc_Boom hat geschrieben: Sa, 11.09.2021 22:16 da hast du recht. alles vorgesagt ist wirklich nicht das wahre. ich versuche soweit alles selber zu schaffen und habe bis jetzt nicht wenig erfolge, nur die sachen mit denen ich mich ans forum wenden, habe ich gar keine ahnung wo ich anfangen soll. ich bin fleißig am lesen und sachen aneignen, aber dazu konnte ich noch nichts finden
In StarBasic ist mir kein fertiges Programm für einen Tascherechner bekannt, hier ist eine Anleitung für VBA:
https://web.archive.org/web/20041015231 ... ds/VBA.pdf

Karolus weiß bestimmt wo man einen Taschenrechner in Python findet.


Gruß
Stephan
Karolus
********
Beiträge: 7136
Registriert: Mo, 02.01.2006 19:48

Re: Taschenrechner

Beitrag von Karolus »

Hallo

mh… das sind IHMO ziemlich schlechte Beispiele, jede Menge copy&paste-Code, Global sollte man vermeiden und eval sowieso.

Ich finde den Ansatz hier im Thema eigentlich interessant, es müssten halt nur ein paar Buttons für Komma … Klammern und Operatoren eingebaut werden, und ja, das hässliche 'eval' vermeiden wir indem wir es Calc überlassen den Ausdruck auszuwerten.
Version: 6.1.5.2
Build-ID: 1:6.1.5-3+rpi1+deb10u6+rpt1
raspberry-pi-OS
Stephan
********
Beiträge: 12317
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Taschenrechner

Beitrag von Stephan »

Ob die Beispiele besonders gut sind, habe ich nicht geprüft. Mir ist auch nicht völlig klar was der Frager letztendlich erreichen will.

Die Taschenrechner-Beispiele habe ich deshalb verlinkt weil ich annehme es könnte Sinn machen die Eingabe-Buttons nicht auf dem Tabellenblatt zu haben, sondern auf einem Dialog den man bei Bedarf einblendet (in passender Position zur gerade markierten Zelle) und ein solcher Dialog wäre, verkürzt gesagt, ein Taschenrechner minus dessen Anzeigefeld.


Letztlich müsste der Threadsrtarter sagen was er insgesamt will, dann könnte man gezielter Ratschläge geben.


Gruß
Stephan
Hiker
*****
Beiträge: 464
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Taschenrechner

Beitrag von Hiker »

Stephan hat geschrieben: So, 12.09.2021 21:09 Letztlich müsste der Threadsrtarter sagen was er insgesamt will, dann könnte man gezielter Ratschläge geben.
Aus einer PN/dem von Karolus verlinkten Thread:
da ich aber ein windows tablet habe würde ich das gerne portable machen indem in LO Calc in einer ecke das integriete Numpad ist damit man es per touch eingeben kann
siehe: https://www.libreoffice-forum.de/viewto ... 12&t=36467
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Stephan
********
Beiträge: 12317
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Taschenrechner

Beitrag von Stephan »

Hiker hat geschrieben: Mo, 13.09.2021 08:22
Stephan hat geschrieben: So, 12.09.2021 21:09 Letztlich müsste der Threadsrtarter sagen was er insgesamt will, dann könnte man gezielter Ratschläge geben.
Aus einer PN/dem von Karolus verlinkten Thread:
da ich aber ein windows tablet habe würde ich das gerne portable machen indem in LO Calc in einer ecke das integriete Numpad ist damit man es per touch eingeben kann
siehe: https://www.libreoffice-forum.de/viewto ... 12&t=36467
dann würde ich das per Dialog lösen, wie bereits angedeutet.

z.B.:

Code: Alles auswählen

Public np_dia As Object
Public np_bib As Object
Dim stop_dia


Sub Main
	BasicLibraries.LoadLibrary("Standard")
	DialogLibraries.LoadLibrary("Standard")
	
	np_bib = DialogLibraries.Standard.Dialog1
	np_dia = CreateUnoDialog(np_bib)
	
	np_dia.addTopWindowListener(CreateUnoListener("wl_", "com.sun.star.awt.XTopWindowListener"))
	
	stop_dia = 0
	np_dia.visible = true
	
	Do
	
	Loop While stop_dia = 0
	
End Sub

Sub Ziffer(event)
	With ThisComponent.CurrentSelection
		.String = .string & event.source.model.label		
	End With
End Sub

Sub enter()
	With ThisComponent.CurrentSelection
		.FormulaLocal = .String
	End With
	
	dim document   as object
	dim dispatcher as object
	rem ----------------------------------------------------------------------
	rem get access to the document
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	
	rem ----------------------------------------------------------------------
	dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

End Sub


Sub wl_disposing(ev)
End Sub
Sub wl_windowOpened(ev) '+
End Sub
Sub wl_windowClosing(ev) '+
	stop_dia = 1 
End Sub
Sub wl_windowClosed(ev) '+
End Sub
Sub wl_windowMinimized(ev) '+
End Sub
Sub wl_windowNormalized(ev) '+
End Sub
Sub wl_windowActivated(ev) '+
End Sub
Sub wl_windowDeactivated(ev) '+
End Sub


Gruß
Stephan
Dateianhänge
EingabetastaturDialog.ods
(13.04 KiB) 6-mal heruntergeladen
Tastaturdialog.gif
Tastaturdialog.gif (26.06 KiB) 513 mal betrachtet
Doc_Boom

Re: Taschenrechner

Beitrag von Doc_Boom »

So brauchte mal ein paar Tage abstand. Jetzt gehts weiter 8) Eure Tipps waren echt gold wert und konnte daraus auch ein paar andere Makros basteln und zudem ist mein Wissen auch gewachsen. Danke an Karolus und Stephan für eure Hilfe
Antworten