Calc: Cursor in Zelle
Moderator: Moderatoren
Calc: Cursor in Zelle
Hallo,
wie kann ich feststellen, dass sich der Cursor in einer Zelle befindet (Cursor blinkt)?
Gruß
Robert
wie kann ich feststellen, dass sich der Cursor in einer Zelle befindet (Cursor blinkt)?
Gruß
Robert
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Calc: Cursor in Zelle
Ist mir in meiner Karriere als Programmierer noch nicht untergekommen, dass dieser Fall genutzt werden kann (oder: muss).
Wozu brauchst Du das?
Wozu brauchst Du das?
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: Calc: Cursor in Zelle
ich finde hier:
https://forum.openoffice.org/en/forum/v ... 18#p340196
einen Code der sich augenscheinlich eignet die gewünschte Info zu bekommen, mir ist das aber zu kompliziert das weiter zu verfolgen ehe nicht klar ist wofür das überhaupt benötigt wird.
Gruß
Stephan
https://forum.openoffice.org/en/forum/v ... 18#p340196
einen Code der sich augenscheinlich eignet die gewünschte Info zu bekommen, mir ist das aber zu kompliziert das weiter zu verfolgen ehe nicht klar ist wofür das überhaupt benötigt wird.
Gruß
Stephan
Re: Calc: Cursor in Zelle
Hallo,
ich habe einen Button in meiner Symbolleiste, der dazu führt, dass ein Makro ausgeführt wird, in dem Änderungen
nur gespeichert werden, wenn auch Änderungen an der Tabelle vorhanden sind. Solange aber die Eingabe in der
Zelle ist, gibt es keine Änderung (Flag isModified ist nicht gesetzt). Ich möchte verhindern, dass der Button gedrückt
werden kann, solange die Eingabe in der Zelle ist.
Die Anwendung gibt es auch in MS Excel. Wenn ich mich hier in der Zelle befinde und auf den Button drücke, dann
wird das Makro nicht ausgeführt solange sich die Eingabe in der Zelle befindet. Das musste ich nicht programmieren.
Gruß
Robert
ich habe einen Button in meiner Symbolleiste, der dazu führt, dass ein Makro ausgeführt wird, in dem Änderungen
nur gespeichert werden, wenn auch Änderungen an der Tabelle vorhanden sind. Solange aber die Eingabe in der
Zelle ist, gibt es keine Änderung (Flag isModified ist nicht gesetzt). Ich möchte verhindern, dass der Button gedrückt
werden kann, solange die Eingabe in der Zelle ist.
Die Anwendung gibt es auch in MS Excel. Wenn ich mich hier in der Zelle befinde und auf den Button drücke, dann
wird das Makro nicht ausgeführt solange sich die Eingabe in der Zelle befindet. Das musste ich nicht programmieren.
Gruß
Robert
Re: Calc: Cursor in Zelle
kann ich leider nicht weiterhelfen.ich habe einen Button in meiner Symbolleiste [...]
[...]
Ich möchte verhindern, dass der Button gedrückt
werden kann, solange die Eingabe in der Zelle ist.
Was aber ein Unterschied (=Button gedrückt aber Makro wird nicht ausgeführt) zur obigen Frage (=Button darf nicht gedrückt werden können) ist.Die Anwendung gibt es auch in MS Excel. Wenn ich mich hier in der Zelle befinde und auf den Button drücke, dann
wird das Makro nicht ausgeführt
Da es hier nur darauf ankäme das Makro (bzw. einen relevanten Teil des Makros) nicht auszuführen könnte man u.U. indirekt auf den Zustand des Cursors schließen weil der Zelleditmodus meiner Ansicht nach nur über Doppelklick oder Taste F2 erreichbar ist und Beides könnte man detektieren.
Gruß
Stephan
- Dateianhänge
-
- Demo-Tastatur-und-Doppelklick-überwachen.ods
- (11.59 KiB) 188-mal heruntergeladen
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Calc: Cursor in Zelle
Dann verstehe ich wohl den Sinn der Eigenschaft ThisComponent.Modified wohl nicht.urbarobe hat geschrieben:dass ein Makro ausgeführt wird, in dem Änderungen
nur gespeichert werden, wenn auch Änderungen an der Tabelle vorhanden sind
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: Calc: Cursor in Zelle
@komma4
Meinst Du das Flag manuell setzen, um das Speichern auszulösen?
Nützt nichts. Solange der Cursor noch in der Zelle ist, gibt es die Änderung an der Tabelle nicht.
Gruß
Robert
Meinst Du das Flag manuell setzen, um das Speichern auszulösen?
Nützt nichts. Solange der Cursor noch in der Zelle ist, gibt es die Änderung an der Tabelle nicht.
Gruß
Robert
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Calc: Cursor in Zelle
Wenn es keine Änderung ist, dann gibt es auch nichts zu speichern (eine event. Eingabe/Änderung kann durch ESC ja verworfen werden.urbarobe hat geschrieben:Solange der Cursor noch in der Zelle ist, gibt es die Änderung an der Tabelle nicht.
Wurde die Zelle durch den gleichen Inhalt "überschrieben" ist das flag gesetzt.
Um diesen Fall abzufangen musst Du gegen eine Kopie vergleichen.
Mir ist der Anwendungsfall noch immer nicht klar.
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: Calc: Cursor in Zelle
mutmaßlich doch wohl nein, da dieses Flag zum Speichern per Makro ganz ohne Bedeutung ist.Meinst Du das Flag manuell setzen, um das Speichern auszulösen?
?Nützt nichts. Solange der Cursor noch in der Zelle ist, gibt es die Änderung an der Tabelle nicht.
DU SELBST schreibst ein Makro zu dem Du sagst:
"dass ein Makro ausgeführt wird, in dem Änderungen
nur gespeichert werden, wenn auch Änderungen an der Tabelle vorhanden sind"
Wenn das nicht so sein soll, dann schreibe das Makro eben so das auch gespeichert wird wenn es keine Änderungen gibt.
Nö, ich weiß nicht ob das Sinn macht ich weiß nur das Du es augenscheinlich so haben willst, denn sonst würdest Du hier nicht die Eigenschaft "isModified " auswerten sondern ganz einfach speichern wenn Du denn speichern willst (oder nicht speichern wenn Du nicht speichern wilst).
Gruß
Stephan
Re: Calc: Cursor in Zelle
Anwendungsfall:
1. Anwender öffnet eine Tabelle
2. Anwender ändert den Wert einer Zelle und schließt dies nicht mit ENTER ab
3. Anwender drückt Button
4. Dialog zum Drucken und Speichern/Schließen der Tabelle erscheint
5. Dokument wird gedruckt und geschlossen
--> Ausdruck ohne Änderung, Tabelle ohne Änderung gespeichert
1. Anwender öffnet eine Tabelle
2. Anwender ändert den Wert einer Zelle und schließt dies nicht mit ENTER ab
3. Anwender drückt Button
4. Dialog zum Drucken und Speichern/Schließen der Tabelle erscheint
5. Dokument wird gedruckt und geschlossen
--> Ausdruck ohne Änderung, Tabelle ohne Änderung gespeichert
Re: Calc: Cursor in Zelle
z.b. das Folgende tut die relevanten Schritte, Drucken ohne Änderungen und Schliessen, die Tatsache das eine Zelle im Edit-Modus ist wird dabei ignoriert, also auch keine Änderung am Zellinhalt gedruckt:
Gruß
Stephan
Code: Alles auswählen
sub Main
Dim printProp(0) as New com.sun.star.beans.PropertyValue
printProp(0).Name = "Wait"
printProp(0).Value = true
ThisComponent.Print(printProp())
ThisComponent.Close(True)
end sub
Stephan
Re: Calc: Cursor in Zelle
Hallo urbarobe,
irgendwie kann ich dein Vorhaben nicht vestehen bringt es doch einige Gefahren mit sich,
(wenn die User nicht in der lage sind Enter zu drücken, weiß man wohl auch nicht vorher ob die Eingaben und somit das Ergebnis korrekt ist)
mit so unsicheren Daten die mehr oder weniger zufällig entstehen würde ich nicht arbeiten wollen oder sinnlos Papier bedrucken.
Erziehe den/die User dazu auf Enter zu drücken, dann kann das Ergeniss geprüft und ggf korrigiert werden.
PS
es kann sich ja nur um einen Zelleninhalt handeln da gibt es doch andere Wege eine korrekte
und vollständige Eingabe in die Tabelle zu übernehmen, zB über Gültigkeit oder einen Dialog!?
irgendwie kann ich dein Vorhaben nicht vestehen bringt es doch einige Gefahren mit sich,
(wenn die User nicht in der lage sind Enter zu drücken, weiß man wohl auch nicht vorher ob die Eingaben und somit das Ergebnis korrekt ist)
mit so unsicheren Daten die mehr oder weniger zufällig entstehen würde ich nicht arbeiten wollen oder sinnlos Papier bedrucken.
Erziehe den/die User dazu auf Enter zu drücken, dann kann das Ergeniss geprüft und ggf korrigiert werden.
PS
es kann sich ja nur um einen Zelleninhalt handeln da gibt es doch andere Wege eine korrekte
und vollständige Eingabe in die Tabelle zu übernehmen, zB über Gültigkeit oder einen Dialog!?
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Calc: Cursor in Zelle
Hallo zusammen,
ich könnte mir vorstellen, dass urbarobe genau dass Gegenteil meint, dass eben der eingetippte Wert, wenn vergessen wird, die Eingabetaste zu drücken, trotzdem mit ausgedruckt werden soll.
Das geht, indem man den Cursor z.B. in Zelle A1 zwingt:
EDIT
Oder besser, zunächst in die Nachbarzelle und dann zurück in die ursprüngliche Zelle:
Gruß R
ich könnte mir vorstellen, dass urbarobe genau dass Gegenteil meint, dass eben der eingetippte Wert, wenn vergessen wird, die Eingabetaste zu drücken, trotzdem mit ausgedruckt werden soll.
Das geht, indem man den Cursor z.B. in Zelle A1 zwingt:
Code: Alles auswählen
Sub Drucken
oSheet = thiscomponent.CurrentController.activeSheet
oCell = oSheet.getcellbyposition(0,0)
thiscomponent.CurrentController.select(ocell)
Dim printProp(0) as New com.sun.star.beans.PropertyValue
printProp(0).Name = "Wait"
printProp(0).Value = true
ThisComponent.Print(printProp())
End Sub
Oder besser, zunächst in die Nachbarzelle und dann zurück in die ursprüngliche Zelle:
Code: Alles auswählen
Sub Drucken
oSheet = thiscomponent.CurrentController.activeSheet
osel = Thiscomponent.currentselection
oController = thiscomponent.CurrentController
if osel.supportsservice("com.sun.star.sheet.SheetCell") then
nrow = osel.CellAddress.Row
nColumn = osel.CellAddress.Column
oCell = oSheet.getcellbyposition(nrow,nColumn + 1)
oController.select(ocell)
oController.select(osel)
endif
Dim printProp(0) as New com.sun.star.beans.PropertyValue
printProp(0).Name = "Wait"
printProp(0).Value = true
ThisComponent.Print(printProp())
End Sub
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Calc: Cursor in Zelle
Hallo
das könnte ich mir auch vorstellen, als Lösung reicht dann die Aufzeichnung des Tastendrucks auf F9...genau dass Gegenteil meint...
Code: Alles auswählen
....
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Calculate", "", 0, Array())
....
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Calc: Cursor in Zelle
Hallo,
es soll das gedruckt und gespeichert werden, was der Anwender sieht. Der Idealfall wäre gewesen, dass er den Button zwar drücken kann, aber nichts passiert, solange er die Eingabe nicht abgeschlossen hat.
Mittlerweile bin ich auch auf die Commands gestoßen. Hier hatte ich es mit "Deselect" probiert. War aber nicht das Richtige. Der Anwender hat im Druckdialog unter anderem die Möglichkeit, nur die Auswahl zu drucken.
Aber das hier ist der Command, den ich gesucht hatte:
.
Gruß
Robert
es soll das gedruckt und gespeichert werden, was der Anwender sieht. Der Idealfall wäre gewesen, dass er den Button zwar drücken kann, aber nichts passiert, solange er die Eingabe nicht abgeschlossen hat.
Mittlerweile bin ich auch auf die Commands gestoßen. Hier hatte ich es mit "Deselect" probiert. War aber nicht das Richtige. Der Anwender hat im Druckdialog unter anderem die Möglichkeit, nur die Auswahl zu drucken.
Aber das hier ist der Command, den ich gesucht hatte:
Danke an alle Beteiligten für die Vorschläge und DenkanstößeKarolus hat geschrieben:Code: Alles auswählen
dispatcher.executeDispatch(document, ".uno:Calculate", "", 0, Array())

Gruß
Robert