Seite 1 von 1

Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Mi, 09.06.2010 10:54
von Noebian
Moin, moin,
ich suche einen Weg, per Shortcut ein versehentlich groß geschriebenes Wort in ein kleingeschriebenes umzuwandeln bzw. umgekehrt. Gibt es da eine fertige Lösung oder muss man ein Makro austüfteln?

Re: Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Mi, 09.06.2010 11:50
von Noebian
Der macht ja gleich alles in Großbuchstaben...

Re: Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Mi, 09.06.2010 12:53
von Noebian
Nee, das ist auch nicht, was ich suche...
In Word gibt es den Befehl "GroßKleinschreibungändern". Der bewirkt, dass ein markiertes Wort nacheinander in Großbuchstaben, Kleinbuchstaben und mit führendem Großbuchstaben geschrieben wird. Ich erinnere mich dunkel, dass ich zu meinen StarWriter-Zeiten eine ähnliche Funktion hatte. Ich weiß aber nicht mehr, ob das ein Makro war oder ob es sich um eine eingebaute Funktion gehandelt hat. Ist jedenfalls praktisch.

Re: Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Mi, 09.06.2010 13:32
von Charly
Hallo!

Ich habe mal in diesem Forum ein Makro gefunden, dass die Lösung von Word imitiert. Das kann dann an einen Tastaturbefehl gebunden werden. Ich habe dafür Analog zu Word die Taste "F3" genommen.

Code: Alles auswählen

Sub GroKlei
Dim sText As String
sText=""
'aktuelles Dokument
xDoc=ThisComponent
xController=xDoc.CurrentController
'Cursor im Doc
xVCrsr=xController.getViewCursor
CurPos=xVCrsr.getPosition()
'gesamtes Dokument
oText=xDoc.Text
xSelection = xDoc.CurrentController.getSelection
'Range des aktuellen Selection
xRange=xSelection(0)
xCursor=xRange.getText.createTExtCursorByRange(xRange)
'Wort markieren
sText=xCursor.GetString()

If Len(sText) <= 0 Then
xCursor.gotoStartOfWord(False)
xCursor.GotoEndOfWord(True)

'String aus Wort ermitteln
sText=xCursor.GetString()
End If

'klein > groß
If sText=LCase(sText) Then
sText=UCase(Left$(sText,1)) + Right$(sText, Len(sText)-1)
'Einfügen
oText.InsertString(xCursor,sText,True)
Exit Sub
End If

'groß > klein
If sText=UCase(sText) Then 
oText.InsertString(xCursor,strConvert(stext,0),True)
Exit Sub
End If

'gemischt
If Left$(sText,1) = UCase(Left$(sText,1)) Then
oText.InsertString(xCursor,strConvert(stext,1),True)
Exit Sub
End If
oText.InsertString(xCursor,strConvert(stext,1),True)
End Sub

Function strConvert (cText As String, Flag As Integer) As String
iRun = 1
while iRun < Len(cText)+1
If Flag=1 Then
Mid( cText ,iRun, 1, UCase(Mid(cText,iRun,1))
Else
Mid( cText ,iRun, 1, LCase(Mid(cText,iRun,1))
End If
iRun = iRun + 1
Wend
strConvert=cText
End Function
Gruß
Charly

Re: Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Do, 10.06.2010 13:49
von Noebian
dANKE schön!

Re: Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Sa, 12.06.2010 08:54
von Noebian
Mist, ich habe gerade auf 3.2.1 upgedated - und nun bricht das Makro mit einer Fehlermeldung ab (vorher lief es tadellos) "Prozedur nicht definiet.
-

edit: ich stelle gerade fest, dass das Umwandeln von klein in Groß funktioniert - aber nicht umgekehrt.

nochmal edit: Ich habe den Fehler gefunden. Ich weiß nicht, wie es passiert ist, aber irgendwie war die Definition der Function verschwunden. Kein Wunder dass das nicht mehr lief...

Re: Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Sa, 12.06.2010 09:31
von turtle47
Hallo Noebian,

folgender Code sollte das tun was Du möchtest:

Code: Alles auswählen

Sub GrossKleinSchreibung
   myDoc=thisComponent
   myViewCursor=myDoc.GetCurrentController. ViewCursor
   oText = myDoc.getText   
   oCursor = oText.createTextCursor() 
   oCursor.gotoRange(myViewCursor,false)
   oCursor.gotoStartOfWord(False)
   myViewCursor.gotoRange(oCursor,false)
   myViewCursor.goRight(1,true)
   buchstabe = myviewCursor.string
   if myviewCursor.string = lcase(buchstabe) then   
   myviewCursor.string=ucase(buchstabe)
   else
   myviewCursor.string=lcase(buchstabe)
   end if
   myViewCursor.goright(1,false)
End Sub
Du brauchst das Wort auch nicht markieren sondern nur den Cursor reinsetzen.

Viel Erfolg.

Jürgen

Re: Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Sa, 12.06.2010 09:46
von Noebian
Naja, nicht ganz. Zwei Großbuchstaben hintereinander kann ich damit nicht ausmerzen.
Trotzdem danke schön!

Re: Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Sa, 12.06.2010 09:54
von turtle47
Hallo Noebian,
Noebian hat geschrieben:Zwei Großbuchstaben hintereinander kann ich damit nicht ausmerzen.
Dafür gibt es doch die Autokorrektur unter Menue > Extras > Autokorrektur > Reiter Optionen
"Zwei Grossbuchstaben am Wortanfang korrigieren"

Jürgen

Re: Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Sa, 12.06.2010 11:23
von Noebian
Da hast du auch wieder recht :-)

Re: Kleinbuchstaben in Großbuchstaben umwandeln

Verfasst: Sa, 12.06.2010 11:41
von turtle47
Hi,

dieser Code macht folgendes bei einem markierten Wort mit zwei oder mehr aufeinander folgenden Grossbuchstaben:

Ausgangswort > GRossbuchstaben

1x Klick = Grossbuchstaben

Nochmal Klick = grossbuchstaben

Nochmal Klick = Grossbuchstaben

....... and so on

Code: Alles auswählen

Sub GrossKleinSchreibung
dim LenString as integer
	myDoc=thisComponent
	myViewCursor=myDoc.GetCurrentController.ViewCursor
	LenString = Len(myviewCursor.string)

	oText = myDoc.getText   
	oCursor = oText.createTextCursor()	
	oCursor.gotoRange(myViewCursor,false) 
	oCursor.gotoStartOfWord(False)
	myViewCursor.gotoRange(oCursor,false)   
	myViewCursor.goRight(1,false)
	myViewCursor.goRight(1,true)
	buchstabe = myviewCursor.string

	if myviewCursor.string = ucase(buchstabe) then   
	oCursor.gotoStartOfWord(False)
	myViewCursor.gotoRange(oCursor,false)   
	myViewCursor.goRight(1,false)
	myViewCursor.goRight(LenString -1,true)
	buchstabe = myviewCursor.string   
	myviewCursor.string=lcase(buchstabe)
	myViewCursor.goleft(1,false)
	myViewCursor.goright(LenString,true)
	exit Sub
	end if
   
	oCursor.gotoRange(myViewCursor,false)
	oCursor.gotoStartOfWord(False)   
	myViewCursor.gotoRange(oCursor,false)
	myViewCursor.goRight(1,true)
	buchstabe = myviewCursor.string
	
	if myviewCursor.string = ucase(buchstabe) then
	myviewCursor.string=lcase(buchstabe)
	else
	myviewCursor.string=ucase(buchstabe)
	end if   
    
End Sub
Jürgen