Bild Umlauf einstellen (Makro)

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

Moderator: Moderatoren

Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Bild Umlauf einstellen (Makro)

Beitrag von sven-my »

Hallo Experten,

ich finde zwar viele Threads zum Thema "Umlauf", aber keiner welches mich einer Lösung näher bringt.

In ein Writer-Dokument füge ich per Makro ein Bild ein.

Da diese Bild einen bestimmten Bereich überdecken soll, wollte ich den Umlauf auf Durchlauf einstellen, aber es sind alle Möglichkeiten von Umlauf ausgegraut, sodaß ich das auch nicht "von Hand" machen kann.

Geht das überhaupt per Makro ?


gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Bild Umlauf einstellen (Makro)

Beitrag von F3K Total »

Hallo my Sven,
ich denke es könnte daran liegen, dass Du kein "GraphicObject" eingefügt hast, sondern eventuell nur die Bitmap, vielleicht hilft der Link:
viewtopic.php?t=39548&p=146505#p146393


Edit: Oder du hast das Bild vielleicht mit dem Anchotype AS_CHARACTER eingefügt, versuche mal AT_PARAGRAPH.
Wenn dann der Umlauf von Hand funktioniert, suche z.B mit Xray oder MRI in den Eigenschaften des "GraphicObject" mal nach "TextWrap", da gibt es dann alle Umlauftypen zum Einstellen.
Gruß R
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: Bild Umlauf einstellen (Makro)

Beitrag von sven-my »

Hallo Rik,

hier der gesamte Ausschnitt aus dem code, der sich auf das Einfügen des Bildes bezieht:

Code: Alles auswählen

oDoc=thisComponent
Title = oDoc.DocumentInfo.Title
aTab = oDoc.getTextTables().getByName("eMail").getCellByPosition(0,0).string
if instr(aTab,"Fax") = 0 and instr(aTab,"eMail") = 0 then return

oBookmarks = oDoc.getBookmarks()
page = oDoc.drawPage
oBookmark = oBookmarks.getByName("unter")
oCursor = oDoc.Text.createTextCursorByRange(oBookmark.Anchor)
img = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
oCursor.string = ""

lw = mid(CurDir,1,2)
if lw = "C:" then lw = "E:"
Uadr = "file:///" & lw & "/OpenOffice/clipart/"

UNr = instr(Title,"Bestellung")
if UNr = 0 then
SNr = instr(Title,"Sven") + instr(Title,"Ulla")
	if Snr > 0 then
		ImgURL= Uadr + "bild1.png"
	else
		ImgURL= Uadr + "bild2.png"
	end if
else
	ImgURL= Uadr + "bild1.png"
end if

img.GraphicUrl = ImgURL
img.name = ImgURL
Dim oGrafikGroesse  as new com.sun.star.awt.Size
oText = oDoc.getText()
ve=1.17		'verhältnis breite zu höhe
hm=8		'höhenmultiplikator
bm=hm * ve	'breitenmultiplikator
oText.insertTextContent(oCursor.getStart, img, False)   
oBildGroesse = img.GraphicObjectFillBitmap.GetSize
hoehe = oBildGroesse.height
breite = oBildGroesse.width
oGrafikGroesse.height = hoehe * hm
oGrafikGroesse.width  = breite * bm
img.setSize(oGrafikGroesse)
Xray : den Hinweis darauf habe ich hier im Forum schon des öfteren gelesen, auch schon mal bekommen.
Einige Male habe ich versucht, mich da 'reinzudenken - war ein nutzloses Unterfangen. Ich begreife einfach nicht, was das Ding macht, wie ich es nutzen soll - ist mir zu hoch; ohne jemanden, der am Rechner neben mir sitzt und mir das mit einfachen Worten erklärt. Mein Englisch ist noch nicht mal rudimentär - zu meiner Schulzeit gab's keinen Englisch-Unterricht, und an den weiterführenden Schulen habe ich mich so durchgemogelt. Das bischen, was ich an der Hochschule brauchte war Fachenglisch, was ich schon lange wieder vergessen habe, mir auch hier nichts bringen würde.

Die Bekannten, die einen Rechner besitzen, können mir zwar alles über irgendwelche Level in Ballerspielen erzählen, ansonsten beschränt sich ihr Können auf's Einschieben neuer Spiele-CD's.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Bild Umlauf einstellen (Makro)

Beitrag von F3K Total »

Hallo Sven my,
sven-my hat geschrieben:Xray : den Hinweis darauf habe ich hier im Forum schon des öfteren gelesen, auch schon mal bekommen.
Einige Male habe ich versucht, mich da 'reinzudenken - war ein nutzloses Unterfangen.
Dachte ich Anfangs auch, bis mir auf einmal klar wurde welche Möglichkeiten xray oder MRI bieten.
Darum schicke ich Dir anbei ein gerade von mir ausgedachtes Übungsbeispiel, was Dir zeigen soll, wie du z.B ein OpenOffice Dokument DURCHLEUCHTEN kannst.
Dazu musst Du das XrayTool60_en haben.

Viel Erfolg Gruß R
Dateianhänge
Xray_Übung_Sven_My.odt
(20.02 KiB) 85-mal heruntergeladen
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: Bild Umlauf einstellen (Makro)

Beitrag von sven-my »

Hallo Rik,

erstmal Danke für Deinen Beitrag und Hochachtung für die Arbeit, die Du Dir da gemacht hast !

Hoffentlich war das bei mir nicht "Perlen vor die Säue".

Nach ersten Anlaufschwierigkeiten konnte ich Deinen Anweisungen folgen - aber, ehrlich gesagt, was ich da gemacht habe, entzieht sich bisher meinem Verständnis.

Aber Dank der farblichen Gestaltung werde ich es wohl step by step nachvollziehen können.

z.B.:
Mit meinen, nicht mal, gut fundiertem Halbwissen, habe ich bisher immer FormularSteuerelemente genutzt, ohne mich darum zu kümmern, was es mit einem Formular auf sich hat.
Funktioniert haben sie trotzdem.

Na ja, in einer halben Stunde läßt sich das alles auch nicht begreifen.

gruß
sven-my
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Bild Umlauf einstellen (Makro)

Beitrag von F3K Total »

Hallo Sven, ich versuche mal zu es so zu erklären:

Code: Alles auswählen

thisComponent.Drawpage.Forms.getbyname("Svens_Formular").getbyname("Svens_Textfeld").string
  • Starte in diesem Dokument-> .thisComponent
  • gehe auf die Zeichenfläche -> .Drawpage
  • nimm dir die Formulare -> .Forms
  • von den Formularen nimm das mit dem Namen Svens_Formular -> .getbyname("Svens_Formular")
  • auf Svens_Formular nimm dir das Kontrollfeld mit dem Namen Svens_Textfeld -> .getbyname("Svens_Textfeld")
  • und lies den enthaltenen String aus -> .string
um also z.B. den Text der im Textfeld steht in die Variable sString zu schreiben, kannst Du den Befehl

Code: Alles auswählen

sString = thisComponent.Drawpage.Forms.getbyname("Svens_Formular").getbyname("Svens_Textfeld").string
nehmen.
mit

Code: Alles auswählen

msgbox sString
kannst Du dir den Text dann auch anzeigen lassen.
Oder umgekehrt, um per Makro einen Text, z.B. "dies ist mein Text" in das Textfeld zu schreiben:

Code: Alles auswählen

thisComponent.Drawpage.Forms.getbyname("Svens_Formular").getbyname("Svens_Textfeld").string = "dies ist mein Text"
Um das ganze übersichtlicher zu gestalten kann man im Makro eigene Variablen für die angesprochenen Objekte vergeben:

Code: Alles auswählen

oDoc = ThisComponent
opage = oDoc.drawpage
oForms = opage.Forms
oSvens_Formular = oForms.getbyname("Svens_Formular")
oSvens_Textfeld = oSvens_Formular.getbyname("Svens_Textfeld")
sString = oSvens_Textfeld.string
msgbox sString 
Etwas klarer?

Ich verwende der Übersichtlichkeit wegen, wie viele andere, am Anfang des Variablen-Namens einen Buchstaben, der kennzeichnet um welchen Typ von Variable es sich handelt.
So steht das o vor oDoc für ein Objekt, also etwas, was viele weitere Eigenschaften hat und das s am Anfang von sString eben für eine String-Variable.
Notwendig ist dies nicht, dieser Code funktioniert genauso:

Code: Alles auswählen

a = ThisComponent
b = a.drawpage
c = b.Forms
d = c.getbyname("Svens_Formular")
e = d.getbyname("Svens_Textfeld")
f = e.string
msgbox f
Gruß R
Benutzeravatar
sven-my
*****
Beiträge: 358
Registriert: Fr, 14.12.2007 19:56

Re: Bild Umlauf einstellen (Makro)

Beitrag von sven-my »

Hallo Rik,
Etwas klarer?
eher nein.

Es ist zwar schmeichelhaft, aber Du scheinst bei mir mehr Wissen vorauszusetzen, als tatsächlich vorhanden.

gruß
sven-my

P.S.: wenn ich längere Zeit nichts hier im Thread hinterlasse, so habe ich nicht das Interesse verloren, sondern ich sammel meine Fragen bei der Beschäftigung mit
>Xray Tools<, um sie dann ganz detailiert und beballt hier 'reinzustellen.
(Ich muß ja keine Fragen stellen, so wie es jetzt noch passieren würde, die sich bei einer intensiveren Beschäftigung mit dem Thema von selbst beantworten würden.)
win7 prof / AOO 4.1.2 & AOO 3.4.0 portable
Antworten