Taschenrechner

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Taschenrechner

Re: Taschenrechner

von Stephan » Mo, 13.09.2021 11:45

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) 93-mal heruntergeladen
Tastaturdialog.gif
Tastaturdialog.gif (26.06 KiB) 2566 mal betrachtet

Re: Taschenrechner

von Hiker » 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

Re: Taschenrechner

von Stephan » So, 12.09.2021 21:09

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

Re: Taschenrechner

von Karolus » So, 12.09.2021 16:40

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.

Re: Taschenrechner

von Stephan » So, 12.09.2021 14:28

Re: Taschenrechner

von Stephan » So, 12.09.2021 09:52

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

Re: Taschenrechner

von Stephan » So, 12.09.2021 09:38

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

Re: Taschenrechner

von Stephan » So, 12.09.2021 09:33

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

Re: Taschenrechner

von Stephan » So, 12.09.2021 09:29

@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

Re: Taschenrechner

von Karolus » 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)

Re: Taschenrechner

von Karolus » Sa, 11.09.2021 21:46

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

Re: Taschenrechner

von Karolus » Sa, 11.09.2021 21:32

Hier wäre mal eine allgemein für alle (Ziffer)buttons anwendbare Funktion (wenn du das Feld 'Name' der Schaltfläche entsprechend ausfüllst):

Code: Alles auswählen

def add_digit(event):
    try:
        value = int(event.Source.Model.Label)
        doc = XSCRIPTCONTEXT.getDocument()
        sel = doc.CurrentSelection
        sel.Value *= 10
        sel.Value += value
    except:
        return
@enter-Taste: beschreib doch erstmal was der Enter-button tun soll…

@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.

Re: Taschenrechner

von Stephan » Sa, 11.09.2021 20:46

Könnte mir ein/e Fachmann/frau einen Tipp geben ?
z.B. für 2:

Code: Alles auswählen

Sub Zwei
oCell = ThisComponent.CurrentSelection
if ocell.supportsservice("com.sun.star.sheet.SheetCell") then

oCell.Value = oCell.string & 2       
endif
(Eigentlich wäre mir oCell.Value = VAL(oCell.string & 2) sympatischer, aber das Vorstehende funktioniert.)


Gruß
Stephan

Re: Taschenrechner

von Stephan » Sa, 11.09.2021 20:44

Doc_Boom hat geschrieben: Sa, 11.09.2021 20:37 Guten Abend,

doch bin ich :lol:

Da ich in dem anderen Forum keine erfolg hatte bzw. keine antwort auf eine folge frage erhalten habe, habe ich gedacht,dass ich probiere hier mein glück probiere.

Vielleicht erreiche ich hier andere User. Ist ja nichts verbotenes dran.


Beste Grüße
und Du hättest hier, und im andern Forum, jeweils wechselseitig einen Link setzen können - und schon wären ale Beteiligten (in Beiden Foren) über das Geschehen in beiden Threads informiert.


Gruß
Stephan

Re: Taschenrechner

von Karolus » Sa, 11.09.2021 20:43

Ist ja nichts verbotenes dran.
Es ist zumindest unhöflich es nicht zu erwähnen das du die gleiche Frage woanders gestellt hast!
Und du hast dort eine Antwort auf deine konkrete Frage bekommen

Nach oben