Bonsoir Bernard, ... et les autres,
J'ai fait quelques tests sur les fonds de notes.
La réalisation présentée ci-après permet de conserver la colorisation,
mais après réouverture un élément parasite (Ancre) s'affiche.
Sans doute une propriété mal maîtrisée (?)
Si tu avais/quelqu'un avait une idée ...
<code_exemple>
Sub InsertNote
dim oCellule as object
dim sNomFeuille as string
dim sAdresseCellule as string
dim sTexte as string
Dim sPos as new com.sun.star.table.CellAddress
sNomFeuille = "Feuille1"
sAdresseCellule = "G8"
sTexte = "dimanche en couleur"
oCellule = ThisComponent.sheets.getByName( sNomFeuille
).getCellRangeByName( sAdresseCellule )
oCellule.String = "La cellule comporte une note"
InsertAnnotation( oCellule, sTexte )
ModifAnnotation( oCellule, sTexte )
MsgBox( "Le fond de la note est en couleur", 64, "Note colorisée")
End Sub
Sub InsertAnnotation( oCell as Object, sText as String )
Dim sPos as new com.sun.star.table.CellAddress
sPos.Sheet = oCell.RangeAddress.Sheet
sPos.Column = oCell.RangeAddress.StartColumn
sPos.Row = oCell.RangeAddress.StartRow
xray ThisComponent
oCell.Spreadsheet.Annotations.insertNew( sPos, sText )
' la méthode ci-dessous ne me satisfait pas car elle génère
' une note aux dimensions exagérées ;)
'oCell.Annotation.AnnotationShape.createTextCursor.setString ("couleur
verte")
end sub
Sub ModifAnnotation( oCell as Object, sText as String )
Dim sPos as new com.sun.star.table.CellAddress
sPos.Sheet = oCell.RangeAddress.Sheet
sPos.Column = oCell.RangeAddress.StartColumn
sPos.Row = oCell.RangeAddress.StartRow
With oCell
.Annotation.AnnotationShape.FillStyle = 1
.Annotation.AnnotationShape.FillColor = 253672 'ou rgb(x,y,z)
'.Annotation.AnnotationShape.FillColor2 = 10079487
End With
End Sub
</code_exemple>
Bernard Marcelly a écrit :
Bonjour Bernard Marcelly
Message du 2006-04-21 13:15:
Bonjour Pascal Duterme
Message du 2006-04-21 08:08:
Bonjour,
J'utiliise pour le planning horaire d'une équipe de travail une
feuille calc, avec quelques routines dont une qui permet d'insérer
des annotations avec des remarques définies par l'utilisateur.
Si l'annotation se met correctement, après peu de temps, la couleur
de l'annotation disparaît (le fond devient transparent et peu
lisible) et l'annotation se déplace loin de la cellule. Comment
est-il possible de fixer définitivement le format des annotations?
Pour le fond transparent, c'est une régression de la version 2.0
<http://www.openoffice.org/issues/show_bug.cgi?id=63053>
Mais il y a plusieurs méthodes pour écrire une annotation, qui évitent
cette anomalie. Voir un autre fil de discussion récent dans cette liste.
Je me corrige. Il y a en fait deux méthodes, qui marchent toutes deux
avec OOo 1.x mais posent problème toutes deux avec 2.0.x :
- celle décrite dans le livre Programmation
maCellule.Annotation.String = "bla bla bla"
Inconvénient : avec OOo 2.0.2 on obtient des caractères énormes
- la méthode officielle, décrite plusieurs fois ici :
lesNotes = maFeuille.Annotations
lesNotes.insertNew(maCellule.CellAddress, "Ceci est une note V2")
Inconvénient : avec OOo 2.0.2 après sauvegarde en xxx.ods et fermeture
du document, la note devient transparente à la réouverture du document.
Contournement de la bogue : sauver le document au format xxx.sxc. La
note garde sa couleur, mais évidemment on ne profite pas des
possibilités de formatage (manuel) de la note, qui sont spécifiques à la
version 2.
Pour ce qui est de formater une note V2 par programmation, mes essais
avec Xray m'ont montré que l'API n'y donne pas accès. On peut créer un
curseur de texte mais on n'a aucune propriété de formatage (interface
XSimpleText comme avec la V1). Si on accède à la forme de la note
(pseudo-propriété AnnotationShape) on obtient bien des propriétés de
formatage, mais tout essai se solde par une note transparente sans
format. Ici aussi il y a une bogue (ou une limitation fonctionnelle).
Le Developer's Guide du SDK n'apporte aucune aide car la description
(chap 8.3.1 Cells) n'est pas mise à jour pour OOo 2.0.
Bonne journée
Bernard
--
Francois GATTO
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]