Worin liegt der Unterschied?

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

Moderator: Moderatoren

Wolfgang Lampert
****
Beiträge: 102
Registriert: Do, 13.05.2004 16:24
Wohnort: Neuss

Worin liegt der Unterschied?

Beitrag von Wolfgang Lampert »

Hi,
nachstehend 2 (einfache) Makros, die beide das Gleiche machen:
1. Cursor >> Zelle
2. Zelle >> Schriftart ändern
3. Schriftart = Fett

Das 2. Makro (..By_Uno..) wurde über den Makro Recorder erstellt.
Offensichtlich führen 2 vollkommen unterschiedliche Wege zum Ziel.
Kann mir jemand sagen, welcher Weg der sinnvollere ist (und warum?) ?
sub ZellFormatierung
oDoc = StarDesktop.CurrentComponent.getCurrentController
oCell = oDoc.ActiveSheet.getCellRangeByName("a2") REM Zell(bereich) identifizieren
oDoc.Select(oCell) REM Cursor setzen
oCell.CharFontName = "Andale Sans" REM SchriftArt
oCell.CharWeight = com.sun.star.awt.FontWeight.BOLD REM Schriftstärke
end sub

sub ZellFormatierung_By_UnoService
dim oDoc as Object
dim oDispatcher as object
oDoc = ThisComponent.CurrentController.Frame
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
REM Sprung zur Zelle A1 ---------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1"
oDispatcher.executeDispatch(oDoc, ".uno:GoToCell", "", 0, args1())
REM Schriftart bestimmen --------------------------------------------
dim args2(4) as new com.sun.star.beans.PropertyValue
args2(0).Name = "CharFontName.StyleName"
args2(0).Value = ""
args2(1).Name = "CharFontName.Pitch"
args2(1).Value = 2
args2(2).Name = "CharFontName.CharSet"
args2(2).Value = -1
args2(3).Name = "CharFontName.Family"
args2(3).Value = 5
args2(4).Name = "CharFontName.FamilyName"
args2(4).Value = "Andale Sans"
oDispatcher.executeDispatch(oDoc, ".uno:CharFontName", "", 0, args2())
REM Schriftstärke bestimmen ------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Bold"
args3(0).Value = true
oDispatcher.executeDispatch(oDoc, ".uno:Bold", "", 0, args2())
end sub
Gruss Wolf
Wolfgang Lampert
****
Beiträge: 102
Registriert: Do, 13.05.2004 16:24
Wohnort: Neuss

Beitrag von Wolfgang Lampert »

Hi Stephan,
danke für die Hinweise.

-Das mit dem Cursor auf Zelle A2 setzen war so geplant, obwohl es nichts mit der Zellformatierung zu tun hatte. Ich wollte halt für mein Beispiel den aufgezeichneten Makro mit meinen Mitteln nachbilden.

-Meine Frage ging dahin, ein besseres Verständnis für die API/UNO Syntax zu entwickeln, da zur Zeit noch sehr, sehr verwirrend. Immer wieder die Frage im Hintergrund "Warum so umständlich (Uno) wenn es doch einfacher geht?".
-Gestern habe ich im folgenden Link gute und leicht verständliche Hinweise erhalten:
http://www.dannenhoefer.de/faqstarbasic ... aften.html

-Die "BOLD" Konstruktion hatte ich so gewählt, da ich nichts anderes
kannte

? Das gleicht Problem habe ich noch bei der Hintergrundformatierung einer Zelle: wie formatiere ich den Hintergrund in GELB

Ciao bis zum nächsten Problemchen.
Wolf
Wolfgang Lampert
****
Beiträge: 102
Registriert: Do, 13.05.2004 16:24
Wohnort: Neuss

Beitrag von Wolfgang Lampert »

Hi Stephan,
oCell.BackColor = RGB(x,y,z) 'ich weiß gelb nicht aus dem Kopf (ich hoffe nicht das es oCell.CellBackColor heißt, aber eines von beiden ist richtig)
oCell.CellBackColor = 16776960 REM Zellhintergrund Gelb
Habe das den Wert über den Makrorecorder ermittelt
Wolf
Antworten