Powerd911 – Numéro #1 au Canada

Sélectionner des caractéristiques visuelles différentes selon les propriétés des Clefs étrangères

Ces quelques lignes de code en Visual Basic démontrent comment assigner des caractéristiques visuelles différentes selon les propriétés de chacune des clefs étragères.

Compatible avec PowerDesigner/PowerAMC 16.5

L’exemple suivant permet de sélectionner des caractéristiques différentes selon les propriétés des Clefs étrangères :

  1. La couleur de la relation sera Bleu si les contraintes d’intégrité référentielle sont de type DÉCLARATIVE ;
  2. La couleur de la relation sera Rouge si les contraintes d’intégrité référentielle sont mises en oeuvre par l’intermédiaire de TRIGGERS ;
  3. L’épaisseur de la ligne de relation sera plus large si la case Générer est décochée ;
  4. Par défaut la couleur de la ligne de relation des clefs étrangères est Noir.

Le script réalise les modifications que sur le diagramme actifmais il peut être adapté afin de couvrir l’ensemble des diagrammes d’un modèle.

Basé sur la même idée vous pourriez définir des styles pour vos tables basées sur des mots-clés que vous avez inscrit ainsi que sur vos annotations 

MajFKCouleurs()
 
Sub MajFKCouleurs()
Dim pdm
Dim symbol,   progressBar,   position

Set pdm = ActiveDiagram

' Il n'y a pas de diagramme actif
If pdm is nothing then
MsgBox "Il n'y a pas de diagramme actif", vbCritical
Exit Sub
End If

Set progressBar = Progress("Bar de progression", true)
progressBar.Min = 0
progressBar.Max = pdm.Symbols.Count
progressBar.Position = 0
progressBar.Stepping = 1
progressBar.Text = "Mise à jour des clefs étrangères selon leurs propriétés"
progressBar.Start()

For Each symbol In pdm.Symbols
progressBar.Step()

If strComp(symbol.ClassName,"Symbole de référence") = 0 then 'Only match foreign keys
position = InStr(symbol.Object.ImplementationType,"D")

' Couleur de défaut
symbol.LineColor = color_BLACK

'Si la Mise en oeuvre est Déclarative
If position = 1 then
symbol.LineColor = color_BLUE
else
symbol.LineColor = color_RED
End If

' Si la case Générer est décochée
If symbol.Object.Generated = FALSE then
symbol.LineWidth = 2
End If

end if
Next

progressBar.Stop()

' Actualiser l'affichage du diagramme
pdm.RedrawAllViews()
End Sub

 

Laisser un commentaire