Zelleninhalt editieren

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

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Zelleninhalt editieren

Beitrag von clag »

Hallo Leutz,

ich möchte per Makro eine Zelle zum editieren öffnen, also praktisch ein F2 durch das Makro
wie muss man das in dem Makro ausehen ?

danke
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zelleninhalt editieren

Beitrag von komma4 »

clag hat geschrieben:praktisch ein F2
und dann?

Was soll das bringen, den Tastendruck F2 durch ein Makro zu ersetzen?
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)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zelleninhalt editieren

Beitrag von clag »

Hallo komma4,
komma4 hat geschrieben:Was soll das bringen, den Tastendruck F2 durch ein Makro zu ersetzen?
na einfach,
dass das Macro an der Stelle anhält, ich den Inhalt der Zelle komplett angezeigt bekomme und ggf editieren kann
und nach einem enter oder esc läuft das Macro weiter.

eine andere Idee wie man den Inhalt einer Zelle im Verlauf des Makro komplett anzeigen kann wäre mir auch recht !
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zelleninhalt editieren

Beitrag von komma4 »

clag hat geschrieben:dass das Macro an der Stelle anhält, ich den Inhalt der Zelle komplett angezeigt bekomme und ggf editieren kann und nach einem enter oder esc läuft das Macro weiter.
Du kannst kein Makro anhalten, den Zellinhalt editieren und dann das Makro nach Tastendruck weiter laufen lassen.
Und nein: ich weiss nicht, wie Du den F2-Druck (nach Blattauswahl und Cursorpositionierung) simulieren kannst.
clag hat geschrieben:eine andere Idee wie man den Inhalt einer Zelle im Verlauf des Makro komplett anzeigen kann wäre mir auch recht !

Code: Alles auswählen

print ThisComponent.Sheets().getByName( "Tabelle1").getCellByPosition( 1, 2 ).getString()
Oder: bastel Dir einen Dialog, übernehme den Zellinhalt, zeige den Dialog (mit OK- und ABBRECHEN-Tasten) mit dem Zellinhalt an.
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)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zelleninhalt editieren

Beitrag von clag »

Hi komma4

schade .....
soweit ich das bis jetzt erkennen kann,
können Dialoge oder auch Print nicht mit Formaten in der Zelle umgehen und auch nicht mit den Zeilenumbrüchen,
sind also für die Anzeige längerer Zell Inhalte völlig ungeeignet !

der F2 edit modus hätte ein guter Behelf sein können

und was zeichnet dann der Macrorecorder hier auf
".uno:SetInputMode" (document, ".uno:SetInputMode", "", 0, Array())
das muss/sollte man doch irgendwie anwenden können ?

ich habe leider nur noch keine Idee wie man das im Makro verwenden könnte
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Zelleninhalt editieren

Beitrag von eBayer »

ich denke, daß man alles in den deutschen und internationalen Foren finden kann.... wenn man sich nur die Mühe macht.
Ich bin absolut kein Calc-Spezi - aber Deine Fragen haben mich gereizt, mal zu versuchen, eine Antwort zu finden, die ich Dir beiliegend als Calc-Dokument schicke. Mit Doppelclick auf irgendeine Zelle wird Dir alles zu der Zelle angezeigt.
Ist nicht auf meinem Mist gewachsen - ich habe mir die Codefragmente aus dem US-Forum gefischt und hoffentlich sinnig zusammengebaut.
Ich denke, Du solltest wirklich erst einmal selbst versuchen, eine Lösung zu finden, bevor Du hier Stück für Stück das Forum rebellisch machst....... was ich Dir hiermit beweisen will.
Hier im Forum heißt es ja auch so schön "Hilfe zur Selbsthilfe"..... Also, Tipps kannst Du hier bekommen, nachdem Du gezeigt hast, daß Du Dich selbst bemüht hast - Aber Löungen mußt Du schon selber entwickeln.
Trotzdem.... schau Dir mal das beiliegende an!
Gruß eBayer
Dateianhänge
ListenerTest.ods
(8.27 KiB) 61-mal heruntergeladen
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Zelleninhalt editieren

Beitrag von eBayer »

.......... und hier mit Dialog!
Dateianhänge
ListenerMitDialog.ods
(9.71 KiB) 57-mal heruntergeladen
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zelleninhalt editieren

Beitrag von clag »

Hallo eBayer

erstmal Danke für die Code Schnippsel
die Anzeige für den Zellinhalt hat große Hoffnung geweckt bis ich versucht habe etwas zu markieren zum kopieren ging leider nicht
aber auch die Mouseclickhandler werde ich mir bestimmt genau ansehen
Wenn man weiß wonach man suchen muss ist das schon von Vorteil.

aber was meinst du damit
eBayer hat geschrieben:bevor Du hier Stück für Stück das Forum rebellisch machst.

meine Beträge/ Anfragen sind allesamt sachlich vielleicht enthalten sie nicht mehr so viel Watte wie zu meinem Einstieg hier

und das hier meinst du doch wohl nicht ernsthaft oder ?
eBayer hat geschrieben: nachdem Du gezeigt hast, daß Du Dich selbst bemüht hast -

es bleibt die Frage, kann man hiervon irgendetwas im Makro verwenden ?
".uno:SetInputMode" (document, ".uno:SetInputMode", "", 0, Array())

dies SetInputMode scheint doch eine Anweisung/Funktion zu sein
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Zelleninhalt editieren

Beitrag von eBayer »

Ich verfolge hier nur Deine Fragen und und die sehen schlicht so aus als ob Du Dir Häppchen für Häppchen die Arbeit von anderen machen lassen willst...... schnell ein paar Fragen in den Raum geworfen - es wird sich schon jemand finden.
Du solltest Dich wirklich entweder im WEB oder mit Hilfe von Fachliteratur zunächst schlau machen, bevor Du Dich mit komplexen Details, die ein ausgeprägtes Hintergrundwissen erfordern, auseinandersetzt. Kommst mir vor wie jemand, der einen Porsche geerbt hat, aber nur Mofa fahren kann - ist nicht bös gemeint! Aber fang einfach langsam an!!!!
mit wirklich freundlichem Gruß
eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zelleninhalt editieren

Beitrag von clag »

Hallo eBayer,

irgendwie kann ich dir nicht folgen
eBayer hat geschrieben:sehen schlicht so aus als ob Du Dir Häppchen für Häppchen die Arbeit von anderen machen
lernen heißt immer vom Wissen Anderer zu profitieren
eBayer hat geschrieben:schnell ein paar Fragen in den Raum geworfen
das ist in eine m Forum eben so ,oder soll ich jede Frage im Rotationsprinzip persönlich adressieren ?
und ein wissbegieriger Mensch hat nun mal viele Fragen
eBayer hat geschrieben:Du solltest Dich wirklich entweder im WEB
ja wo bin ich den hier
eBayer hat geschrieben:Kommst mir vor wie jemand, der einen Porsche geerbt hat, aber nur Mofa fahren kann
mit Excel VBA Limousine komm ich durchaus zurecht,
leider sind beim Komfort kein Vergleiche möglich, denn Calc erinnert mich dann eher an nen LJ 80 ohne Betriebsanleitung

die Hoffnung das einige Member hier viel über StarBasic wissen und auch preisgeben wollen ist der Grund warum ich meine Fragen hier Stelle,
ich hatte aber nichts über Fragen Kontingente gelesen .........

auch mit wirklich freundlichem Gruß
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zelleninhalt editieren

Beitrag von komma4 »

komma4 hat geschrieben:
clag hat geschrieben:praktisch ein F2
und dann?

Was soll das bringen, den Tastendruck F2 durch ein Makro zu ersetzen?
Gegen (Deine) Fragen habe ich nichts.

Mich stört lediglich, wenn so ungenau gefragt wird.
Erst willst Du die Zellinformation editieren, dann stellt sich heraus, dass der Inhalt auch noch (unterschiedlich=nicht über Zellformate) formatiert ist ("Zeilenumbrüche").


Nun meine freundlichen Bemerkungen hierzu:

a) Bitte frage demnächt konkret: was hast Du (Daten in Calc?), was willst Du (formatierten Text anzeigen und bearbeiten) und wo findet das statt (Heim-/Netzcomputer, Betriebssystem, OOo-Version, Dateiformat, ...).

b) Calc ist eine Tabellenkalkulation, kein Satz-/Layoutprogramm. Formatierte Inhalte sind keine Kalkulationsgrundlage. Lagere formatierte Inhalte ggfs. in Writer-Dokumente aus.

c) wenn es um die Anzeige eines Zellinhaltes geht: warum ziehst Du die Zelle nicht so gross, bis alles sichtbar ist? Zommen (STRG+Mausrad drehen; STRG++)?

d) Du solltest inzwischen wissen, wie ein dispatcher-Befehl aufgerufen werden kann. Das hilft Dir aber nicht weiter zum Ziel (s.o.: Formatierungen!)


Halte Dich daran: Daten und Präsentation (Aufbereitung, Ausdruck) zu trennen.

my 5¢
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)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zelleninhalt editieren

Beitrag von clag »

Hallo und n'Abend
komma4 hat geschrieben:Mich stört lediglich, wenn so ungenau gefragt wird.
dann wird mir möglicher weise von anderer Seite wieder vorgehalten ich wolle meine Arbeit abwälzen :?

ok; es hätte dann besser geheißen
ich möchte in Calc per Makro eine Zelle zum editieren öffnen, also praktisch ein F2 durch das Makro
wie muss man das in dem Makro ausdrücken ?

ich hänge mal zwei Bilder an die darstellen was ich in Calc erreichen möchte

1. ein ganz alter Wunsch von mir die Zeile in der der Cursor steht soll sich farblich evtl auch in der Höhe von den anderen unterescheiden
showtext-1row.png
showtext-1row.png (51.97 KiB) 1149 mal betrachtet
2. wenn der Cusor in eine bestimme Spalte gesetzt wird soll diese Zelle automatisch vergrößert werden so das der ganz Inhalt angezeigt wird.
Das würde mit F2 Edit optimal funktionieren weil die Zelle nach unten auf geklappt wird, alternativ auch die Zeilenhöhe ändern und wieder zurücksetzen.
showtext-2optimal.png
showtext-2optimal.png (45.78 KiB) 1149 mal betrachtet
die Listener die ich bisher ausprobiert habe haben aber ein Problem mit mit hohen Key Wiederholraten der Tastatur und kommen dabei aus dem Takt und übergeben falsche Werte.
In den Listener eingebaute Waits werden dabei ebenfalls einfach übersprungen

Also eigentlich eine recht simple Aufgabe aber mit sehr vielen Problemen im Detail ... und da hänge ich seit eine Woche dran fest
komma4 hat geschrieben:d) Du solltest inzwischen wissen, wie ein dispatcher-Befehl aufgerufen werden kann. Das hilft Dir aber nicht weiter zum Ziel (s.o.: Formatierungen!)
hier überschätz du mich, ist mir leider noch nicht klar, aber ich werde jedes verständliche Wort dazu aufsaugen......
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Zelleninhalt editieren

Beitrag von turtle47 »

Hallo Zusammen,

@ All

Ich weis, ich habe das erste Beispiel mit dem Listener gebracht. Nur muss ich dazu sagen, dass ich kein grosser Freund davon bin. Zumal ich gestern in einem Forum über einige Bugs der Listner gelesen habe.

Leider sind auch die Beispiele von eBayer und mir davon betroffen. Wenn man z. B. bei gestartetem Listner in die Seitenansicht wechselt und diese wieder schliesst, dann ist der Listener deaktiviert und kann nicht wieder gestartet werden. :shock:

@ Clag

Sorry, aber jetzt muss ich auch noch in deine eh schon offene Wunde stossen.
Ich kann Deine Denkweise absolut nicht nachvollziehen. Warum missbrauchst Du eine Tabellenkalkulation für Aufgaben, die mit anderen Anwendungen viel einfacher zu handhaben sind???

Wenn ich das richtig sehe, dann pflegst Du die Inhalte von Michaels toller Website in Calc ein.
Warum dieser ganze Umstand und Aufwand? Man kann die gesamte Website als Zip-Datei runterladen und auf dem eigenen Rechner entpacken. Eine Verknüpfung zu der enthaltnen Index.htm im Browser anlegen und schon hat man den gesamten Seiteninhalt auch offline zur Verfügung. :lol:
Zusätzliche Inhalte kann man dazu noch recht einfach einpflegen.

Mir fällt zu dem ganzen Thema nur noch folgendes ein:
Ein dreieckiges Rad ist besser als ein viereckiges. Es rumpelt einmal weniger je Umdrehung.
Guts Nächtle.

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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zelleninhalt editieren

Beitrag von Stephan »

dass das Macro an der Stelle anhält, ich den Inhalt der Zelle komplett angezeigt bekomme und ggf editieren kann
und nach einem enter oder esc läuft das Macro weiter.


und weshalb muß dabei das Makro angehalten werden?
Ein ganz simples do-loop im Sinne:

Code: Alles auswählen

x = ThisComponent.getCurrentSelection.getCellAddress
x1 = x.Row
x2 = x.Column

Do
	x = ThisComponent.getCurrentSelection.getCellAddress
	y1 = x.Row
	y2 = x.Column
	z = 0
	If x1 <> y1 OR x2 <> y2 Then z = 1
Loop While z <> 1
sollte doch bereits genügen
1. ein ganz alter Wunsch von mir die Zeile in der der Cursor steht soll sich farblich evtl auch in der Höhe von den anderen unterescheiden
ist bereits im Forum gelöst worden BENUTZE DIE SUCHFUNKTION!
Das würde mit F2 Edit optimal funktionieren
und WARUM machst Du es dann nicht so?

Warum missbrauchst Du eine Tabellenkalkulation für Aufgaben, die mit anderen Anwendungen viel einfacher zu handhaben sind?
sehr gute Frage!



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

Re: Zelleninhalt editieren

Beitrag von Karolus »

Hallo
Ich stell hier nochmal etwas Code ein der zumindest hier so funktioniert wie ich Clags Aufgabenstellung verstanden habe.
Ob es sinnvoll ist so etwas über eine Tabellenkalkulation abzuarbeiten soll er dann selbst entscheiden.

Code: Alles auswählen

Global CellString as String
Global mySheet As Object
Global oListener As Variant
Global oDocument As Variant
Global aktiv_chk as Integer
global lastrow as Integer
global lastcol as integer

Sub initializeListener
	oListener = CreateUnoListener( "ClicListener_", "com.sun.star.view.XSelectionChangeListener" )
	oDocument = ThisComponent
	oDocument.getCurrentController.addSelectionChangeListener(oListener)
End Sub

Sub remove_Listener
	'Den Listener zu deaktivieren funktioniert leider nicht.
	'Dieser wird aber automatisch beendendet wenn das Dok geschlossen wird
	'remove the listener from controller
	'oDocument = ThisComponent   
	'oDocument.removeSelectionChangeListener(oListener)
End Sub


Sub ClicListener_selectionChanged(oEvent)
	Dim Selection As Object
	Dim bTest as Boolean
	oSelection = oEvent.source.selection
	
if oSelection.supportsService ("com.sun.star.sheet.SheetCell") then
	Doc = thisComponent
	mySheet = Doc.Sheets(0)
	CellString = oSelection.string
	
	if lastrow <> oSelection.CellAddress.row or oSelection.CellAddress.Column <> lastCol then
		mysheet.getcellbyposition(lastcol,lastrow).cellbackcolor = -1
	end if	
	
	If len(CellString) > 10 Then
		oselection.CellBackColor = &Hffffaa
''''''''''''↓Aufzeichnung F2''''''''''''''''''''''''''''''''''''''''''''''''''''''''#
		doc_frame   = doc.CurrentController.Frame                                  '#
		dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")         '#
		dispatcher.executeDispatch(doc_frame, ".uno:SetInputMode", "", 0, Array()) '#
'''''''''''↑Ende der Aufzeichnug''''''''''''''''''''''''''''''''''''''''''''''''''''#
		
		lastcol = oSelection.CellAddress.Column
		lastrow = oSelection.CellAddress.row
	end if
end if

End Sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten