BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Grafische Linien wieder entfernen
-
- Beiträge: 39
- Registriert: So 5. Mai 2019, 09:20
Grafische Linien wieder entfernen
Guten Tag
Ich möchte für die Zeilen meiner Anwendung extra Linien farbig und in verschiedener Stärke erzeugen mit einem Makromodul, habe dazu bei Lenhardt ein ListingNr. 300 gefunden und damit experimentiert bis ich merkte dass das nicht das ist was ich eigentlich wollte.
Dieses Listing 300 Seite 321 handelt wenn ich das richtig sehe von grafisch erzeugten Linien, also keine Zellenlinien(links, rechts, oben, unten).
Hab mittlerweile das richtige gefunden, muss aber erst mal die grafischen Linien aus meinem Spalten/Zeilenbereich entfernen und weiss nicht wie ?? Hab schon in der API versucht was zu finden, hab leider noch nicht kapiert wie ich hier was finden soll !?
In dem von mir verwendeten obigen Listing werden die Linien erzeugt mit dem Befehl .getDrawPage.add(Linie). Wenn man in der API oder sonst wo die Funktion .getDrawPage() finden würde müsste neben .add doch aufgelistet sein welche Attribute hier noch angelegt sind, also z.B. .delete oder .purge o.ä.
Weiss bitte jemand Rat ?
vielen Dank
Ich möchte für die Zeilen meiner Anwendung extra Linien farbig und in verschiedener Stärke erzeugen mit einem Makromodul, habe dazu bei Lenhardt ein ListingNr. 300 gefunden und damit experimentiert bis ich merkte dass das nicht das ist was ich eigentlich wollte.
Dieses Listing 300 Seite 321 handelt wenn ich das richtig sehe von grafisch erzeugten Linien, also keine Zellenlinien(links, rechts, oben, unten).
Hab mittlerweile das richtige gefunden, muss aber erst mal die grafischen Linien aus meinem Spalten/Zeilenbereich entfernen und weiss nicht wie ?? Hab schon in der API versucht was zu finden, hab leider noch nicht kapiert wie ich hier was finden soll !?
In dem von mir verwendeten obigen Listing werden die Linien erzeugt mit dem Befehl .getDrawPage.add(Linie). Wenn man in der API oder sonst wo die Funktion .getDrawPage() finden würde müsste neben .add doch aufgelistet sein welche Attribute hier noch angelegt sind, also z.B. .delete oder .purge o.ä.
Weiss bitte jemand Rat ?
vielen Dank
- Dateianhänge
-
- Listing 300 grafische Linien entfernen.odt
- (13.58 KiB) 235-mal heruntergeladen
Re: Grafische Linien wieder entfernen
Nächstes Mal vielleicht ein Backup machen.
Code: Alles auswählen
sub delete_all_lineshapes_from_all_sheets
for i=0 to thiscomponent.getsheets().count-1
Tabelle = thiscomponent.getsheets().getbyindex(i)
oDrawpage=Tabelle.getdrawpage
k=oDrawpage.count-1
for k=oDrawpage.count-1 to 0 step -1
oGraphic=oDrawpage.getbyindex(k)
if oGraphic.supportsService("com.sun.star.drawing.LineShape") then oDrawpage.remove(oGraphic)
next k
next i
end sub
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html
Re: Grafische Linien wieder entfernen
Hallo Luftschraube,
viele Wege führen nach Rom. Die auch unterschiedliche Charakteristiken haben.
Du willst eine Linie löschen. Okay! Aber können sich auch noch andere "Grafische Elemente" auf der Drawpage in Calc befinden die Du vielleicht auch noch löschen willst?
Bei expilziet nur einer einzigen Linie könntest Du dem Beispiel von musikai folgen. Wobei man das auch anders angehen kann.
Wenn Du aber verschiedene Elemente zum löschen hast, dann muss ein anderes Verfahren her und das schon bei der Erstellung des Grafischen Elements.
Die Sache mit den "Grafischen Elementen" muss man wissen und auch berücksichtigen. Denn da steckt nämlich eine Stolperfalle drin, die für Anfänger nicht sofort ersichtlich und erkennbar ist.
Kreise, Qudrate oder sonstiges die Du mit der Zeichenfunktion zeichnen kannst, sind klar und eindeutig Grafische Elemente. Da denkt eigentlich jeder daran.
Aber!
Wenn Du dir nur mal so als ein Beispiel dir einen Button zeichnest;
-> Ansicht
-> Symbolleisten
---> Formular Steuerlement
(oder wie auch immer der Weg in deiner LO-Version lautet)
so ist dieser Button auch ein Grafisches Element.
Und was noch schlimmer ist, da sehr leicht zu übersehen ist, eine Notiz/Kommentar die an eine Zelle eingefügt wird, ist auch ein Grafisches Element. Wenn die Notiz nicht dauerhaft eingeschaltet ist, sieht man nicht immer sofort das kleine Rote Quadrat in der Zellecke.
Also auf der Drawpage können sich die unterschiedlichsten Elemente befinden. Aber eins haben sie gemeinsam, sie sind halt AUF der Drawpage und AUF der Zelle. Und das muss man immer bedenken.
Was ich als blödsinn halte ist, das Du deinen Code in ein Writer-Dokumen einfügst, und diese Writer-Datei hier anhängst. Um z.B. einen Code zu Posten gibt es extra dafür vorgesehene Tags, wenn man einen Beitrag erstellt. Also mach das bitte schön zukünftig. Denn so macht das helfen keinen großen Spaß, und es nervt gewaltig.
Eine sichere Methode nur das zu löschen was man auch wirklich löschen will ist, dem erstelltem Zeichenobjekt (Grafisches Element) einen Namen zu vergeben. Denn dann kann man beim löschen einfach den Namen suchen und vergleichen und bei Übereinstimmung das Objekt löschen.
Im Anhang ist eine leicht modifizierte Version von deinem gefundenen Code.
-> Drück den Button "Zeichnen" und es wird eine Linie mit Pfeilen gezeichnet.
-> Drück den Button "Löschen" und es wird nur die Linie gelöscht, die Buttons, Notiz so wie das Schwarze Rechteck bleiben aber unberührt.
-> Schau dir die beiden BASIC-Module in der Datei an.
Ach was solls!
Hier meine Löschroutine die nur die Linie löscht. Sie funktioniert nur im Zusammenhang mit dem Code im Module1.
Gruß
balu
viele Wege führen nach Rom. Die auch unterschiedliche Charakteristiken haben.
Du willst eine Linie löschen. Okay! Aber können sich auch noch andere "Grafische Elemente" auf der Drawpage in Calc befinden die Du vielleicht auch noch löschen willst?
Bei expilziet nur einer einzigen Linie könntest Du dem Beispiel von musikai folgen. Wobei man das auch anders angehen kann.
Wenn Du aber verschiedene Elemente zum löschen hast, dann muss ein anderes Verfahren her und das schon bei der Erstellung des Grafischen Elements.
Die Sache mit den "Grafischen Elementen" muss man wissen und auch berücksichtigen. Denn da steckt nämlich eine Stolperfalle drin, die für Anfänger nicht sofort ersichtlich und erkennbar ist.
Kreise, Qudrate oder sonstiges die Du mit der Zeichenfunktion zeichnen kannst, sind klar und eindeutig Grafische Elemente. Da denkt eigentlich jeder daran.
Aber!
Wenn Du dir nur mal so als ein Beispiel dir einen Button zeichnest;
-> Ansicht
-> Symbolleisten
---> Formular Steuerlement
(oder wie auch immer der Weg in deiner LO-Version lautet)
so ist dieser Button auch ein Grafisches Element.
Und was noch schlimmer ist, da sehr leicht zu übersehen ist, eine Notiz/Kommentar die an eine Zelle eingefügt wird, ist auch ein Grafisches Element. Wenn die Notiz nicht dauerhaft eingeschaltet ist, sieht man nicht immer sofort das kleine Rote Quadrat in der Zellecke.
Also auf der Drawpage können sich die unterschiedlichsten Elemente befinden. Aber eins haben sie gemeinsam, sie sind halt AUF der Drawpage und AUF der Zelle. Und das muss man immer bedenken.
Was ich als blödsinn halte ist, das Du deinen Code in ein Writer-Dokumen einfügst, und diese Writer-Datei hier anhängst. Um z.B. einen Code zu Posten gibt es extra dafür vorgesehene Tags, wenn man einen Beitrag erstellt. Also mach das bitte schön zukünftig. Denn so macht das helfen keinen großen Spaß, und es nervt gewaltig.
Eine sichere Methode nur das zu löschen was man auch wirklich löschen will ist, dem erstelltem Zeichenobjekt (Grafisches Element) einen Namen zu vergeben. Denn dann kann man beim löschen einfach den Namen suchen und vergleichen und bei Übereinstimmung das Objekt löschen.
Im Anhang ist eine leicht modifizierte Version von deinem gefundenen Code.
-> Drück den Button "Zeichnen" und es wird eine Linie mit Pfeilen gezeichnet.
-> Drück den Button "Löschen" und es wird nur die Linie gelöscht, die Buttons, Notiz so wie das Schwarze Rechteck bleiben aber unberührt.
-> Schau dir die beiden BASIC-Module in der Datei an.
Ach was solls!
Hier meine Löschroutine die nur die Linie löscht. Sie funktioniert nur im Zusammenhang mit dem Code im Module1.
Code: Alles auswählen
sub ZeichnungLoeschen
oPage=ThisComponent.drawpages(0)
for ip = 0 to oPage.count
oGrafik=opage.getbyindex(ip)
if oGrafik.getName() = "xxx_Pfeile" then
oPage.remove(oGrafik)
exit for
end if
next ip
end sub
Gruß
balu
- Dateianhänge
-
- zeichnen und löschen calc makro_1.ods
- (13.55 KiB) 227-mal heruntergeladen
Re: Grafische Linien wieder entfernen
Mein Code löscht alle Linien.
Das ist auf jeden Fall eine gute Idee!!!
Cool, wußte nicht, dass man auch direkt auf die drawpages zugreifen kann.balu hat geschrieben: ↑Di 22. Okt 2019, 16:48Code: Alles auswählen
sub ZeichnungLoeschen oPage=ThisComponent.drawpages(0) for ip = 0 to oPage.count oGrafik=opage.getbyindex(ip) if oGrafik.getName() = "xxx_Pfeile" then oPage.remove(oGrafik) exit for end if next ip end sub
Beim Löschen von Objekten per getbyindex sollte man immer rückwärts vorgehen und als Maximum nur bis count-1 gehen, dann gibt's auch keinen Fehler, wenn man den löschen Button einmal zu oft drückt.
Code: Alles auswählen
sub ZeichnungLoeschen
oPage=ThisComponent.drawpages(0)
for ip = oPage.count-1 to 0 step -1
oGrafik=opage.getbyindex(ip)
if oGrafik.getName() = "xxx_Pfeile" then
oPage.remove(oGrafik)
exit for
end if
next ip
end sub
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html
Re: Grafische Linien wieder entfernen
Mahlzeit musikai,
Ich hatte den Code vor ein paar Wochen erst selbst zusammengeschustert, und da war er für eine einfachere Sache. Aber so haben wir beide was dazu gelernt, und das ist doch voll in Ordnung
Gruß
nalu
Stimmt! Da geb ich dir recht. Getestet, und funktioniert.dann gibt's auch keinen Fehler, wenn man den löschen Button einmal zu oft drückt.
Ich hatte den Code vor ein paar Wochen erst selbst zusammengeschustert, und da war er für eine einfachere Sache. Aber so haben wir beide was dazu gelernt, und das ist doch voll in Ordnung
Gruß
nalu
-
- Beiträge: 39
- Registriert: So 5. Mai 2019, 09:20
Re: Grafische Linien wieder entfernen
Hallo,
vielen Dank für die umfassende Antwort.
Mit sub delete_all_lineshapes... von musikai konnte ich die grafischen Elemente auf Anhieb löschen nachdem die Variablen angelegt waren, vielen Dank.
Das Notizen auch grafische Elemente sind und man grafischen Elementen auch einen Namen geben kann("xxx_Pfeile") ist allerdings sehr interessant !!
Dass ich meinen code in Writer beigefügt habe finde ich selber sehr umständlich, weiss blos nicht wie's anders geht. Vermute mal über das Icon '<> code anzeigen' , beim nächsten mal ausprobieren !?
gruss Luftschraube
vielen Dank für die umfassende Antwort.
Mit sub delete_all_lineshapes... von musikai konnte ich die grafischen Elemente auf Anhieb löschen nachdem die Variablen angelegt waren, vielen Dank.
Das Notizen auch grafische Elemente sind und man grafischen Elementen auch einen Namen geben kann("xxx_Pfeile") ist allerdings sehr interessant !!
Dass ich meinen code in Writer beigefügt habe finde ich selber sehr umständlich, weiss blos nicht wie's anders geht. Vermute mal über das Icon '<> code anzeigen' , beim nächsten mal ausprobieren !?
gruss Luftschraube
-
- Beiträge: 39
- Registriert: So 5. Mai 2019, 09:20
Re: Grafische Linien wieder entfernen
Hallo
Grafischen Elementen einen Namen geben kann man ja auch wenn man das Element mit der rechten Maustaste anklickt und im sich öffnenden Menue den Punkt 'Namen' anwählt !
ThemenEnde
gruss Luftschraube
Grafischen Elementen einen Namen geben kann man ja auch wenn man das Element mit der rechten Maustaste anklickt und im sich öffnenden Menue den Punkt 'Namen' anwählt !
ThemenEnde
gruss Luftschraube
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️