per Makro einen Kommentar einfügen

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

Moderator: Moderatoren

Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: per Makro einen Kommentar einfügen

Beitrag von Karolus »

Hallo Winfried
komma4 hat geschrieben:Ich schrieb oben schon: bei mir funktioniert Dein Ursprungsmakro. Und hinter der Zeile

Code: Alles auswählen

  oCell.annotation.string="auf diese Zelle wirkt eine BF"
Diese Zeile funktioniert hier nur falls vorher schon Notizen eingetragen waren ( getestet mit OOo3.2.1 und mit Suse_OOo3.1 ) ?

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: per Makro einen Kommentar einfügen

Beitrag von komma4 »

Vielleicht setzt Du voraus, dass meine Glaskugel Deinen aktuell verwendeten Code zeigt.

Und ja: es ist möglich, dass unterschiedliche Versionen unterschiedlich reagieren.




@Karolus: wie im Footer geschrieben: 3.0.1 / Linux. in einem neuen Calc-Dokument, ohne dass vorher Kommentare eingetragen waren.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: per Makro einen Kommentar einfügen

Beitrag von clag »

Hi

hier ein Stück vom Code, damit die Glaskugel nicht so beansprucht werden muss :)

Code: Alles auswählen

 
   if BedFormat > 0 Then
   oSheet.getAnnotations.insertNew(obereich.celladdress(), "Zelle enthält ein BF" 
   oCell.Annotation.setIsVisible( TRUE )
'   oCell.Annotation.set IsVisible( TRUE )
'   oCell.Annotation.set IsVisible(TRUE)
'    oBereich.Annotations.set IsVisible ( TRUE )
   end if
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: per Makro einen Kommentar einfügen

Beitrag von komma4 »

dann nehme mal

Code: Alles auswählen

oBereich.Annotation.setIsVisible( TRUE )
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: per Makro einen Kommentar einfügen

Beitrag von clag »

Hallo .........

ja, das tut was ich möchte,
na da war ich ja schon dichte dran.... :)

ist vielleicht aber doch nicht so das Gelbe vom Ei, weil man die eingeblendeten Notizen
sowohl in der ganzen Tabelle als auch im markierten Bereich nur löschen aber nicht ausblenden oder einblenden kann :(

Gibt es tatsächlich keine Funktion alle Notizen ein/ausblenden hmmm ...

den zweiten Punkt lege ich mal auf Eis oder in die Hände von "ichhabespassamstarbasiccoden" Leuten :)
ich würde dabei eingehen s.o.

also herzlichsten Dank
an alle helfenden Sehstäbchen, Gehirnzellen, Tippfinger und deren Wirte
:lol:
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: per Makro einen Kommentar einfügen

Beitrag von komma4 »

clag hat geschrieben: aber nicht ausblenden oder einblenden kann
Man kann....mit Basic 8)

Code: Alles auswählen

Sub AnnotationDisplayOff

oDok = ThisComponent
oBlatt = oDok.CurrentController.getActiveSheet()
oKommentare = oBlatt.Annotations

For i = 0 To oKommentare.Count - 1
   oKommentare.getByIndex( i ).setIsVisible( FALSE )
Next i

End Sub
Die Variante zum Anschalten bekommst Du selbst hin?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: per Makro einen Kommentar einfügen

Beitrag von clag »

Hallo Komma4,

da kommst du mir wie gerufen ich habe da an etwas ähnliches gedacht
du hast jetzt ein "Tabellenweit wirkendes" Makro generiert

ich hat überlegt eine weiter Abfrage in das Makro einzubauen

wenn auf BF (>0) überprüft wird und das erste >0 erkannt wurde
dann auf auf oCell.Annotation.setIsVisible( TRUE ) prüfen
wenn TRUE alle auf (FALSE) setzen
wenn FALSE alle auf (TRUE) setzen

wie müsste die Abfrage als BASIC-Codezeile formuliert werden ?
(kann man das überhaupt abfragen?)

dann könnte man durch wiederholtes aufrufen des Makro,
alle relevanten Notizen ein und ausblenden und die Anzeige gleichsetzen,
ggf auch die Inhalte aktualisieren (falls die Werte einmal aus den BF ausgelesen werden)

hast du da noch Zeit und Lust zu ?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: per Makro einen Kommentar einfügen

Beitrag von komma4 »

Code: Alles auswählen

Sub toggleAnnotationDisplay

oDok = ThisComponent
oBlatt = oDok.CurrentController.getActiveSheet()
oKommentare = oBlatt.Annotations

For i = 0 To oKommentare.Count - 1
   If oKommentare.getByIndex( i ).getIsVisible() =  FALSE  Then
      oKommentare.getByIndex( i ).setIsVisible( TRUE )
   Else
      oKommentare.getByIndex( i ).setIsVisible( FALSE )
   End If
Next i

End Sub

Rufe das Makro einfach nach der letzten Anweisung (vor END SUB) auf, durch:

Code: Alles auswählen

call toggleAnnotationDisplay
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: per Makro einen Kommentar einfügen

Beitrag von clag »

hi,
da bin ich jetzt etwas irritiert weil ich nicht erkennen kann was du beabsichtigt hast

folgendes passiert :
das Makro läuft bis zur MsgBox und die Kommentare sind eingeblendet
mit klick auf ok der MsgBox wird diese und alle Kommentare ausgeblendet,
ist das der korrekte von dir geplante Ablauf ?
LG
clag

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

Re: per Makro einen Kommentar einfügen

Beitrag von Karolus »

Hallo
Spricht etwas gegen:

Code: Alles auswählen

...
For i = 0 To oKommentare.Count - 1
      oKommentare.getByIndex( i ).setIsVisible( not oKommentare.getByIndex( i ).getIsVisible() )
Next i
...
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: per Makro einen Kommentar einfügen

Beitrag von clag »

hi Karo

dein Code funktioniert innerhalb der Markierung genau wie der von Komma4

aber er hat auch Einfluss auf Kommentare außerhalb der Markierung und blendet die auch ein bzw aus !?

eingebaut habe ich ihn an Stelle dessen was Komma4 zwischen For i und Next i stehen hatte.
LG
clag

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

Re: per Makro einen Kommentar einfügen

Beitrag von Karolus »

Hallo Clag
Die drei Zeilen ersetzen lediglich folgende sechs Zeilen

Code: Alles auswählen

For i = 0 To oKommentare.Count - 1
   If oKommentare.getByIndex( i ).getIsVisible() =  FALSE  Then
      oKommentare.getByIndex( i ).setIsVisible( TRUE )
   Else
      oKommentare.getByIndex( i ).setIsVisible( FALSE )
   End If
Next i
Das solltest du aber schon selbst herausfinden können.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: per Makro einen Kommentar einfügen

Beitrag von clag »

Hi

ja genauso habe ich es verstanden und auch getan mit dem beschriebenen Ergebnis

Code: Alles auswählen

    Sub toggleAnnotationDisplay

    oDok = ThisComponent
    oBlatt = oDok.CurrentController.getActiveSheet()
    oKommentare = oBlatt.Annotations
For i = 0 To oKommentare.Count - 1
      oKommentare.getByIndex( i ).setIsVisible( not oKommentare.getByIndex( i ).getIsVisible() )
Next i

'    For i = 0 To oKommentare.Count - 1
'       If oKommentare.getByIndex( i ).getIsVisible() =  FALSE  Then
'          oKommentare.getByIndex( i ).setIsVisible( TRUE )
'       Else
'          oKommentare.getByIndex( i ).setIsVisible( FALSE )
'       End If
'    Next i
    End Sub
oder hab ich hier etwas falsch gemacht ?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: per Makro einen Kommentar einfügen

Beitrag von clag »

Hallo Leutz,

entschuldigt bitte wenn ich das als Basic DAU so sage,
aber eure nachgeschalteten Sub's gefallen mir von der Wirkung her noch nicht so richtig

darum habe ich darüber gebrütet wie ihr da die Kommentare zählt und findet
und ich denke nun die sind nicht "adressiert" sondern durchnummeriert beginnend bei 0 ?
zumindest scheint mir das so nach meinen Versuchen

Code: Alles auswählen

If oKommentare.getByIndex( 0 ).getIsVisible() =  FALSE  Then
msgbox "hallo"
end if
zumindest begrüßt mich dieses stück Code wenn der Tabellenweit zuerst erstellte Kommentar sichtbar ist

wie muss das umgestrickt werden wenn ich nicht von der gesamten Tabelle,
sondern nur aus dem markierten Bereich den ersten Kommentar auf sichtbarkeit prüfen möchte ?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: per Makro einen Kommentar einfügen

Beitrag von turtle47 »

Hallo Clag,
clag hat geschrieben:wie muss das umgestrickt werden wenn ich nicht von der gesamten Tabelle,
sondern nur aus dem markierten Bereich den ersten Kommentar auf sichtbarkeit prüfen möchte ?

Code: Alles auswählen

Sub Kommentar_suchen
	oDoc = ThisComponent
	oSheet = ThisComponent.CurrentController.getActiveSheet()
	oZell = oDoc.getCurrentSelection()
	oZell.supportsService("com.sun.star.sheet.SheetCellRange")
	oSelect=ThisComponent.CurrentSelection.getRangeAddress
	oSelectColumn=ThisComponent.CurrentSelection.Columns
	oSelectRow=ThisComponent.CurrentSelection.Rows
	CountColumn=oSelectColumn.getCount
	CountRow=oSelectRow.getCount
	Start_Column=oSelect.StartColumn
	End_Column=oSelect.EndColumn
	Start_Row =oSelect.StartRow
	End_Row=oSelect.EndRow
	For sp = Start_Column to End_Column
	For ze = Start_Row to End_Row
	oSelectSR = oSelect.StartRow + 1
	oSelectEC = oSelectColumn.getByIndex(CountColumn-1).getName
	oBereich = oSheet.getCellByPosition(sp,ze)
		if  oBereich.Annotation.IsVisible = true then
			print "1. Kommentar  ist sichtbar in " & oBereich.AbsoluteName
			exit Sub
		end if
	next ze
	next sp
	msgbox "Es wurde kein sichtbarer Kommentar gefunden!",64, "Kommentar  suchen"
End Sub
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Antworten