(Writer) Text-Cursor verstecken

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: (Writer) Text-Cursor verstecken

Re: (Writer) Text-Cursor verstecken

von marcel_at_work » So, 01.08.2010 21:20

Hallo Jürgen,

... es geht!!! :D

Ich leg die Datei aber vorab ins Archiv, da ich mein Projekt nun unter C++ realisieren werde. Die eingeschränkten Möglichkeiten von OOo sind einfach zuuuuuuuuuuuuuu extrem geworden - oder besser gesagt: mein derzeitiges Projekt ist in meinen Überlegungen schon viel zu umfangreich, als dass ich es unter Verwendung von StarBasic jemals beenden könnte...

Aber trotzdem HERZLICHSTEN DANK!

GlG, Marci

Re: (Writer) Text-Cursor verstecken

von turtle47 » So, 01.08.2010 19:55

Hallo Marcel,

versuche es mal so:

Code: Alles auswählen

Sub Hide_Menubar
dim lmgr as object
	lmgr = ThisComponent.CurrentController.Frame.LayoutManager
	lmgr.hideElement("private:resource/menubar/menubar") 'Menüleiste
End Sub
Viel Erfolg

Jürgen

Re: (Writer) Text-Cursor verstecken

von marcel_at_work » So, 01.08.2010 09:56

Hey Jürgen,

ein kleines Problem hab ich da doch noch gefunden:

Mit folgender Funktion verstecke ich das Menü und sämtliche Programmkomponenten...

Code: Alles auswählen

Function setOOoViewSettings(bView as Boolean)
	'... wird durch die Funktion "programStart" aufgerufen
	'Verstecken aller OpenOffice-Menüs und sichtbarer Komponenten:
	With Stardesktop.getCurrentComponent().CurrentController
		.Frame.LayoutManager.setVisible(bView)
		.ViewSettings.ZoomValue = 100
		.ViewSettings.ShowGraphics = True
		.ViewSettings.ShowIndexMarkBackground = bView
		.ViewSettings.ShowRulers = bView
		.ViewSettings.ShowFieldCommands = bView
		.ViewSettings.ShowSpaces = bView
		.ViewSettings.ShowDrawings = bView
		.ViewSettings.ShowFootnoteBackground = bView
		.ViewSettings.ShowAnnotations = bView
		.ViewSettings.ShowTextBoundaries = bView
		.ViewSettings.ShowVertScrollBar = bView
		.ViewSettings.ShowHiddenParagraphs = bView
		.ViewSettings.ShowTextFieldBackground = bView
		.ViewSettings.ShowVertRuler = bView
		.ViewSettings.ShowProtectedSpaces = bView
		.ViewSettings.ShowSoftHyphens = bView
		.ViewSettings.ShowHoriRuler = bView
	End With
End Function

call setOOoViewSettings(False)
Dies klappt soweit auch bestens. Nur, wenn man nun irgendeinen Button auf dem Formular anclickt, wird noch vor Ausführung der dort zugewiesenen Funktion, das Programmmenü wieder eingeblendet (und bleibt dann auch sichtbar :( ). Ein OOo-Fehler?
Die einzige Möglichkeit, die ich bis jetzt fand, ist, die oben aufgeführten Eigenschaften komplett zurückzusetzen und erneut zu durchlaufen...

Code: Alles auswählen

call setOOoViewSettings(False)
call setOOoViewSettings(True)
... nur das dies dann eben bei jedem Click in der Anwendung auch zu sehen ist - auf...

Code: Alles auswählen

Stardesktop.getCurrentComponent().CurrentController.Frame.LayoutManager.setVisible(False)
... reagiert das Programm NICHT mehr.

Hättest du vl. einen letzten kleinen Rat für mich?

Lg, Marci

Re: (Writer) Text-Cursor verstecken

von marcel_at_work » Sa, 31.07.2010 19:36

Hallöchen, Jürgen, :D

HEUTE darfst DU mal mein Held sein - ich hoffe, DPunch ist jetzt ned eifersüchtig. :lol:

ES GEHT!!!

Ich hätte wohl ned aufgeben sollen...
... denn die Funktion:

Code: Alles auswählen

ThisDocument_notifyContextMenuExecute(ContextMenuExecuteEvent As Object)
... hatte ich schon auf vielerlei Art getestet - ich hatte aber die Subroutine/Schleife:

Code: Alles auswählen

'remove all menu entries:
For I = oATContainer.Count - 1 To 0 Step -1
oATContainer.removeByIndex(I)
Next I
... ausdokumentiert gelassen. Naja... das nächste Mal! 8)

Das mit der MsgBox hab ich rausgenommen, da das Kontextmenü "Einfügen" scheinbar einzig bei Eingabefeldern angezeigt wird und ja eigentlich eine äußerst nützliche Funktion darstellt. Die Optionen "Grafiken- und Plugins deaktivieren" waren aber absolut fehl am Platz, weil der Benutzer somit die komplette Anzeige sowie auch teile der Anwendung hätte editieren können.

Also HERZLICHSTEN DANK und ein WUNDERSCHÖNES WEEKEND auch DIR!

Lg, Marci

Re: (Writer) Text-Cursor verstecken

von turtle47 » Sa, 31.07.2010 17:37

Hallo Marcel,
marcel_at_work hat geschrieben:Ich glaub, ich gebe es auf...
Ich fast nie.

Beigefügt mal eine Beispieldatei wo das Kontextmenue deaktiviert ist.
Nur bei dem Textfeld würde das Kontextmenue noch funktionieren, wenn es da diese blöde MsgBox nicht gäbe. :lol:
Wenn der User die ein paar mal gesehen hat dann lässt er schnell die Finger davon. :-x
marcel_at_work hat geschrieben:Du schreibst doch bestimmt auch Anwendungen, bei denen du eine "dezente" Programm-Oberfläche bevorzugst, auf der der Endbenutzer auch ausschließlich NUR das angezeigt bekommt, was er braucht.

Nö, eigentlich nicht. Ich arbeite gerne mit Dialogen, sogar mehrseitige wenn es sein muss.

Schönes WE.

Jürgen
Dateianhänge
Kontextmenue deaktivieren.odt
(10.28 KiB) 82-mal heruntergeladen

Re: (Writer) Text-Cursor verstecken

von marcel_at_work » Fr, 30.07.2010 19:17

Hallo, lieber Jürgen, :)

... jepp, wie wahr. Vielmals Sorry!!!
Ich dachte, es hätte schon in den Posts vorher irgendwo gestanden!? :? Ich werd´ab nun ein wenig genauer auf das schauen, was ich schreibe (bzw. schrieb). 8)

Die Lösungen im (meinem) Thread zur Dialog-Titelleiste gehen LEIDER genau in die entgegengesetzte Richtung, die ich eigentlich einschlagen wollte... vielleicht werd´ich langsam deppert, aber mich stört es erheblich, das die Titelleiste von OOo-Dialogen höher ist, als von einem Programm (wahrscheinlich nur unter Windows) in maximierter Ansicht. Zudem kann man auch die Option der Dialog-Verschiebung per Maus nicht abschalten (sprich: man kann einen Dialog nicht am Bildschirm feststellen). Und genau darum hatte ich auch vor einem Monat schon mal die Idee gehabt, die Dialog-Titelleiste ganz auszublenden (bzw. durch eine Positionierung aus dem Bild zu "schieben"), womit ich ja aber klaglich scheiterte.
Und weil ich nun zu diesem Punkt eben immer noch nicht weitergekommen bin, nun der Versuch, meine Anwendungen über Formulare zu realisieren, da dort die Titelleiste schon in gewünschter Form vorhanden wäre - wobei ich aber nun das Problem habe, das man ein Kontextmenü aufrufen kann und der Mauszeiger als der einer Textdatei dargestellt wird (der er ja nun unter Verwendung eines Writer-Dokumentes auch mal ist :lol: ).

Vielen lieben Dank für deinen Code, aber ich habe nun auch LEIDER nach fast fünf Stunden nichts erreicht, von dem ich sagen könnte, ich hätte annähernd irgendwas verstehen können. :(

Ich glaub, ich gebe es auf...

Du schreibst doch bestimmt auch Anwendungen, bei denen du eine "dezente" Programm-Oberfläche bevorzugst, auf der der Endbenutzer auch ausschließlich NUR das angezeigt bekommt, was er braucht. Wie realisierst du denn dies??? Mit Dialogen?

Lg, Marci

Re: (Writer) Text-Cursor verstecken

von turtle47 » Mi, 28.07.2010 18:53

Hi Marcel,
marcel_at_work hat geschrieben:Der Textcursor im Hintergrund verschwindet nun zwar, aber der der Maus bleibt leider weiterhin erhalten. Einen Rat?
Von dem Mauszeiger war aber noch nie die Rede!
Zumal Du geschrieben hattest:
marcel_at_work hat geschrieben:Das einzige, was noch fehlt - da ich es als unbeschreiblich störend empfinde - , wäre, den Textcursor irgendwie auszublenden. Hat jemand einen Rat, ob dies möglich ist?
marcel_at_work hat geschrieben:Zudem ist auch immer noch das Kontextmenü des rechten Mausbuttons anwählbar - kann man dieses irgendwie abschalten?
Auch von dem Kontextmenue war noch nie die Rede!

Was kommt den als nächstes? Bestimmte Tasten sperren?
Oder den Gemütszustand des Users mit einem Smilie im Formular anzeigen? :wink:

Ich mag es ehrlich gesagt nicht wenn immer wieder nachgelegt wird. :(

Ausserdem mag ich es nicht, wenn man dem User sämtliche Funktione entzieht und ihn somit quasi entmündigt. :twisted:

marcel_at_work hat geschrieben:und das Vorhandensein von den Titelleisten-Buttons wie z.B. "Minimieren" (weshalb auch nicht unbedingt ein Dialog verwendet werden kann))
Dazu hatten wir in diesem Thread schon mal was geschrieben.
turtle47 hat geschrieben:dann ist die Titelleiste halt "nur" deaktiviert und somit das X für Schliessen nicht mehr anklickbar.

Noch mal zu diesem Thema:
marcel_at_work hat geschrieben:Zudem ist auch immer noch das Kontextmenü des rechten Mausbuttons anwählbar - kann man dieses irgendwie abschalten?
Hier ein Code zum Kontextmenue, den ich mal aus dem Netzt gefischt habe:

Code: Alles auswählen

Option Explicit
Global oDocView As Object
Global oContextMenuInterceptor As Object
Global oStore As Object
Global oPropSetRegistry As Object
Const MNU_PREFIX = "pmxMenu_"

'_______________________________________________________________________________
Sub registerContextMenuInterceptor	
	InitMenuFactory
	oDocView = ThisComponent.CurrentController
	oContextMenuInterceptor = _
	CreateUnoListener("ThisDocument_", "com.sun.star.ui.XContextMenuInterceptor")	
	oDocView.registerContextMenuInterceptor(oContextMenuInterceptor)	
End Sub


'_______________________________________________________________________________
Sub releaseContextMenuInterceptor
	On Error Resume Next
	oDocView.releaseContextMenuInterceptor(oContextMenuInterceptor)	
	TerminateMenuFactory	
End Sub


'_______________________________________________________________________________
Function ThisDocument_notifyContextMenuExecute(ContextMenuExecuteEvent As Object) As Variant
Dim oSrcWin As Object
Dim oExePoint As Object
Dim oATContainer As Object
Dim oSelection As Object

Dim oMenuItem As Object
Dim I As Integer

	With ContextMenuExecuteEvent
	
		'contains the window where the context
		'menu has been requested 
		oSrcWin = .SourceWindow
		
		'contains the position the context menu
		'will be executed at (css.awt.Point)
		oExePoint = .ExecutePosition
		
		'enables the access to the menu content. 
		'The implementing object has to support the
		'service ActionTriggerContainer
		oATContainer = .ActionTriggerContainer 
		
		'provides the current selection
		'inside the source window
		oSelection = .Selection 				
	End With


	'remove all menu entries:
	'For I = oATContainer.Count - 1 To 0 Step -1
		'oATContainer.removeByIndex(I)
	'Next I
	
	'add some context menu entry
	'oMenuItem = GetSimpleMenuItem("Entry1", "Inhalte unformatiert einfügen", "")
	'oATContainer.insertByIndex(0, oMenuItem)
	
	'oMenuItem = GetMenuSeparator("Entry2")
	'oATContainer.insertByIndex(1, oMenuItem)
	
	oMenuItem = GetSimpleMenuItem("Entry1", "Inhalte unformatiert einfügen", "macro:///Standard.Module1.Hallo")
	oATContainer.insertByIndex(9, oMenuItem)


' POSSIBLE RESULTS FOR THIS FUNCTION
' This function must result one of the following values:

' com.sun.star.ui.ContextMenuInterceptorAction.IGNORED
'	the XContextMenuInterceptor has ignored the call. 
'	The next registered XContextMenuInterceptor should be notified.

' com.sun.star.ui.ContextMenuInterceptorAction.CANCELLED
'	the context menu must not be executed. 
'	The next registered XContextMenuInterceptor should not be notified.

' com.sun.star.ui.ContextMenuInterceptorAction.EXECUTE_MODIFIED
'	the menu has been modified and should be executed
'	without notifying the next registered XContextMenuInterceptor.

' com.sun.star.ui.ContextMenuInterceptorAction.CONTINUE_MODIFIED
'	the menu has been modified and the next registered
'	XContextMenuInterceptor should be notified.

	ThisDocument_notifyContextMenuExecute = _
		com.sun.star.ui.ContextMenuInterceptorAction.EXECUTE_MODIFIED

End Function


'_______________________________________________________________________________
'	MENU FACTORY ROUTINES
'_______________________________________________________________________________
Sub InitMenuFactory()

	oStore = CreateUnoService("com.sun.star.ucb.Store")
	oPropSetRegistry = oStore.createPropertySetRegistry("")

End Sub


'_______________________________________________________________________________
Sub TerminateMenuFactory()
Dim mNames()
Dim sName As String
Dim I As Integer

	mNames() = oPropSetRegistry.getElementNames
	
	For I = LBound(mNames()) To UBound(mNames())
		sName = mNames(I)
		
		If Left(sName, Len(MNU_PREFIX)) = MNU_PREFIX Then
			oPropSetRegistry.removePropertySet ( sName ) 
		End If
	Next I
	
	oPropSetRegistry.dispose
	oStore.dispose
	
End Sub

'_______________________________________________________________________________
' Sorry: menu icon and sub-menues not supported
Function GetSimpleMenuItem( sName As String, sText As String, _
sCommandUrl As String, Optional sHelpUrl As String ) As Object

Dim oPropSet As Object
Dim sInternalName As String

	sInternalName = MNU_PREFIX & sName
	If oPropSetRegistry.hasByName(sInternalName) Then
		oPropSetRegistry.removePropertySet(sInternalName)
	End If
		
	oPropSet = oPropSetRegistry.openPropertySet(sInternalName, True)

	oPropSet.addProperty("Text", 0, sText)
	oPropSet.addProperty("CommandURL", 0, sCommandUrl)

	If Not IsMissing(sHelpUrl) Then
		oPropSet.addProperty("HelpURL", 0, sHelpUrl)
	End If
		
	GetSimpleMenuItem = oPropSet
	
End Function


'_______________________________________________________________________________
Function GetMenuSeparator( sName As String ) As Object

Dim oPropSet As Object
Dim sInternalName As String
Dim iSeparatorType As Integer

	sInternalName = MNU_PREFIX & sName
	If oPropSetRegistry.hasByName(sInternalName) Then
		oPropSetRegistry.removePropertySet(sInternalName)
	End If
	
	oPropSet = oPropSetRegistry.openPropertySet(sInternalName, True)
	
	'constant group com.sun.star.ui.ActionTriggerSeparatorType not supported?
	'unfortunately, the only separator-type working is the "SPACE"
	'regardless for the iSeparatorType passed...
	iSeparatorType = 1
	oPropSet.addProperty("SeparatorType", 0, iSeparatorType)

	GetMenuSeparator = oPropSet
	
End Function
Durchbeissen muss Du Dich da schon alleine.

Viel Erfolg.

Jürgen

Re: (Writer) Text-Cursor verstecken

von marcel_at_work » Di, 27.07.2010 23:40

Hallo Jürgen,

danke für dein Feedback.

Der Textcursor im Hintergrund verschwindet nun zwar, aber der der Maus bleibt leider weiterhin erhalten. Einen Rat? Oder ist dieser Zustand einfach das Max. an Anpassung???
Zudem ist auch immer noch das Kontextmenü des rechten Mausbuttons anwählbar - kann man dieses irgendwie abschalten?

Lg, Marci

Re: (Writer) Text-Cursor verstecken

von turtle47 » So, 25.07.2010 23:12

Hi Marcel,

nehme Dein Writer-Doc (Formular) setzte die Ansicht auf Weblayout und speichere es ab.
Setze anschliessend im Dateimanger bei den Eigenschaften den Status auf Schreibgeschützt.
Öffne anschliessend Dein Doc neu und Du hast eine reine Eingabemaske ohne Cursor.

Die Symbolleisten kannst Du ja wie bereits schon angewendet via Makro ausblenden.

Viel Erfolg.

Jürgen

Re: (Writer) Text-Cursor verstecken

von marcel_at_work » So, 25.07.2010 21:55

Ps.: Wie würdest DU denn eine Anwendung unter OOo realisieren, wenn als oberstes Kriterium eine annähernd "propietäre" Oberfläche (sprich: keine regulären Menüs und das Vorhandensein von den Titelleisten-Buttons wie z.B. "Minimieren" (weshalb auch nicht unbedingt ein Dialog verwendet werden kann)) vorhanden sein soll?

Mensch... mit VBA ging alles so unsagbar leicht - dort konnte man einen Dialog (Form) per API nach Belieben anpassen und u.v.a. sogar das Programm-Icon von Excel austauschen, wofür ich ja auch immernoch keine Lösung unter OOo gefunden habe. :(

Ich bete einfach mal für irgendwelche (auch wenn irrsinnige :lol: ) fremden Gedankengänge, die mich auf meinem Weg ein kleines Bißchen weiter bringen könnten. :lol:

Lg,Marci

EDIT:

Huiiii,... ich hab grad gesehen, das das mit dem Textcursor im Hintergrund NICHT für Formulare gilt, die direkt in Base eingebunden sind. :lol:
Ist das nicht auch extern irgendwie möglich? Und, kann man dieses Menü, das man dort in Base mit der rechten Maustaste über dem Formular ("Bilder ausschalten", etc.) öffnen kann, abschalten?

Re: (Writer) Text-Cursor verstecken

von marcel_at_work » So, 25.07.2010 14:19

Hallo Winfried,

doch... doch, natürlich habe ich Eingabefelder. :lol:

.ViewCursor, sowie auch fast alle anderen Eigenschaften von CurrentController, habe ich schon vergebens getestet. Es ist zwar nicht sonderlich schlimm, wenn im Hintergrund, in der Writer-Oberfläche, ein blinkender Textcursor zu sehen ist, aber es ist dennoch irgendwo doof - zumal er ja absolut nicht gebraucht wird (zum. nicht an dieser Stelle).

Sonst noch einen Rat?

Lg, Marci

Re: (Writer) Text-Cursor verstecken

von komma4 » So, 25.07.2010 07:38

Du hast keine Eingabefelder, nur Schaltflächen?

Code: Alles auswählen

ThisComponent.CurrentController.ViewCursor.setVisible( FALSE )
funktioniert bei mir nicht :roll:

(Writer) Text-Cursor verstecken

von marcel_at_work » Sa, 24.07.2010 22:07

Hallo Freunde,

ich hab mir jetzt, per Writer, ein externes Formular angelegt und sämliche Elemente der Programm-Oberfläche ausgeblendet, um ein annähernd eigenständiges Aussehen meiner OOo-Anwendung hinzubekommen. Das einzige, was noch fehlt - da ich es als unbeschreiblich störend empfinde - , wäre, den Textcursor irgendwie auszublenden. Hat jemand einen Rat, ob dies möglich ist?

Lg, Marci

Nach oben