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]

Répondre à