Bonjour,
je suis confronté à un problème depuis quelques jours concernant l'utilisation d'une "bibliothèque de type" importée via 'Importer un composant' (Delphi Xe).

Dans l'unité (_TLB) importée se trouve une "property" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
    property PropertyValue[PropId: PropId]: OleVariant read Get_PropertyValue write Set_PropertyValue;
c'est via cette propriété que l'on peut configurer tout une liste de paramètres. Certains sont des Boolean, d'autre des Integer ou single et cela fonctionne sans aucun probleme ; la convertion des types delphi (integer, single, ...) via OleVariant se fait "automatiquement"

Par contre un paramètre de la librairie requiert une valeur de type "Record" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 Rectangle = record
    Left: Smallint;
    Top: Smallint;
    Width: Smallint;
    Height: Smallint;
  end;
(le type rectangle se trouvant bien définit dans le fichier _TLB importé).

et dans ce cas je n'arrive pas à "passer" ce type de paramètre, le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 var R : Rectangle  ;
 
 begin
  R.Left     := 100 ;
  R.Top     := 100 ;
  R.Width  := 320 ;
  R.Height := 200 ;
 
  Device.PropertyValue[ PROPID_GRAB_USER_ROI_RECT_I ] := R ;
 end;
donne une erreur de compilation:
E2010 Type incompatibles : "OleVariant" et "rectangle"

d'un autre côté si je "passe" une variable d'un type accepté (integer) à la compilation, c'est alors à l'exécution qu'u message apparait :

Le projet ... exe a déclebcé la classe d'exception EOleException avec le message "type mismatch. expected Rectangle for property GRAB_USER_ROI_RECT_I" .

Merci de votre aide.