Zellposition auf der Drawpage

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

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Zellposition auf der Drawpage

Beitrag von clag »

Moin Zusammen,

ist es möglich über die Zelladresse zu ermitteln wo eine Zelle auf der Drawpage liegen würde, ggf auch Höhe und Breite errechnen ?
Ich möchte per Makro über die Zelladresse eine Grafik passgenau auf der Drawpage plazieren (optisch in eine Zelle einfügen),
ist das machbar?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zellposition auf der Drawpage

Beitrag von Stephan »

meiner Meinung nach:

Nein, erfahrungsgemäß ist das nicht möglich.

Es gibt mehrere Threads in welchem die genaue Positionierung auf Tabellenblättern anhand der Größe de Zellen diskutiert wird um immer blieb die Feststellung das die von der Zellgröße abgeleitete Positionierung nur ungefähr genau ist. (mmh, diskutiert wurde das bisher wohl immer für OO, ich glaube aber nicht das es bei LO anders ist)
Grund dafür ist, nach Meinung der Mitdiskutanten, Ungenauigkeiten welche sich aus der Rundung (bzw. Umrechnung) von Größenwerten ergeben. Calc ist auch kein Zeichenprogramm, so das solche Ungenauigkeiten bei normaler Verwendung keine Probleme machen.


Gruß
Stephan
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellposition auf der Drawpage

Beitrag von clag »

hallo Stephan,
danke für die schnelle Antwort

Aus deiner Antwort lese ich herraus das man grundsätzlich die Position errechnen kann.

hmmm .... vieleicht habe ich die Betonung zu sehr auf "genau" gelegt,
Ich denke die Ungenauigkeiten in der Berechnung könnte man für ein System jeweils justieren,
die wiederholte Berechnungen liefern vermutlich die gleichen Ergenisse.

Ich würde mich freuen wenn mir jemand aufzeigen könnte, wie man die aus der Zelladresse eine Position auf der Drawpage errechnet.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zellposition auf der Drawpage

Beitrag von Stephan »

zunächst nachträglich ein Screenshot, weil es mich selbst interessiert hat. Beide Programme weichen ab, LO ist augenscheinlich etwas genauer:
Positionierungsgenauigkeit_Calc.gif
Positionierungsgenauigkeit_Calc.gif (37.59 KiB) 6197 mal betrachtet
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zellposition auf der Drawpage

Beitrag von Stephan »

Ich würde mich freuen wenn mir jemand aufzeigen könnte, wie man die aus der Zelladresse eine Position auf der Drawpage errechnet.
Ob man das als "Position auf der Drawpage" auffassen soll, weiß ich garnicht, nur die Position jeder Zelle ergibt sich doch aus Breite der Spalten und Höhe der Zeilen, also für B10 z.B.:

Code: Alles auswählen

Sub Main
	'B10
	Dim y
	Dim x
	
	For i = 0 To 8
		y = y + ThisComponent.Sheets.getByIndex(0).Rows(i).Height
	Next i
	x = ThisComponent.Sheets.getByIndex(0).Columns(0).Width
	
	Msgbox "Linke obere Ecke von Zelle B10 bei y = " & y & " und x = " & x
End Sub

allgemein also z.B.:

Code: Alles auswählen

Sub Position_zelle(spaltenindex, zeilenindex)
	Dim y
	Dim x
	
	For i = 0 To zeilenindex-1		
              y = y + ThisComponent.Sheets.getByIndex(0).Rows(i).Height
	Next i
        For i = 0 To spaltenindex-1 
	      x = x + ThisComponent.Sheets.getByIndex(0).Columns(i).Width
        Next i
	
	Msgbox "Linke obere Ecke von Zelle B10 bei y = " & y & " und x = " & x

End Sub
Gruß
Stephan
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellposition auf der Drawpage

Beitrag von clag »

Danke, das sieht auf den ersten Blick für meinen Zweck ausreichend genau aus,
Was mir im Moment nicht klar ist, addieren sich die Fehler bei höheren Zelladressen ?

Ich hoffe du verräts mir noch, wie man eine Zelladresse in eine Drawpage Position umrechnet,
zB für C1000 muss ich alle vorhergehenden Zeilenhöhen ermitteln, summieren und dann umrechnen oder wie?

edit:
Danke
du warst schneller mit der Antwort wie ich mit meiner Fragerei :lol:

ich werde jetzt erst mal experimentieren
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Zellposition auf der Drawpage

Beitrag von Karolus »

Hallo

?? Übersehe ich irgendwas ??

Bei mir hat jede|r Zell(e|bereich) ein Attribut .Position mit X und Y Koordinaten, und ein Attribut .Size mit Width und Height ?

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellposition auf der Drawpage

Beitrag von clag »

Hallo Karolus

OMG .... nach so ewtas hatte ich schon mit Xray gesucht aber wieder nicht gesehen (das Scheunentor war einfach zu groß)

Ist das direkt die Position auf der Drawpage, dann ist es ja einfach.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zellposition auf der Drawpage

Beitrag von Stephan »

?? Übersehe ich irgendwas ??

Bei mir hat jede|r Zell(e|bereich) ein Attribut .Position mit X und Y Koordinaten, und ein Attribut .Size mit Width und Height ?
Du übersiehst garnichts. Interessant wäre welcher Grund Deiner Meinung nach für Abweichungen besteht. Vielleicht lässt sich daraus das Problem der von mir angesprochenen Abweichungen erklären?

Hinweis: die Abweichungen waren jedoch nicht mein Grund ursprünglich vorgeschlagen zu haben Zeilen- bzw. Spaltengrößen zu addieren, sondern ich hatte einfach nicht nachgesehen das es .Position für Zellen/Zellbereiche gibt.

Code: Alles auswählen

Sub Main
	tmp = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("B10:C20").Position
	Msgbox tmp.Y '-->4475
	For i = 0 To 8
		k = k + ThisComponent.Sheets.getByIndex(0).Rows(i).Height
	Next i
	Msgbox k '-->4491
End Sub

Gruß
Stephan
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Zellposition auf der Drawpage

Beitrag von mikeleb »

Hallo,
hier: https://www.libreoffice-forum.de/viewtopic.php?t=16028
haben wir so etwas ähnliches schon mal gehabt, um Steuelemente an Zellen anzupassen.
Gruß,
mikeleb
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellposition auf der Drawpage

Beitrag von clag »

Halle mikeleb,

Danke für den Hinweis/ Link
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten