Je réalise une vaste DLL de support, en Delphi 6 Personal Edition, pour un langage Freeware externe (clone de Basic).
Dans le cadre de ce travail, je souhaite mettre à disposition une fonction permettane de gérer la couleur et les délais des HINT des différents objets de l'application. Pour cela, je tente d'utiliser les propriétés de l'objet TApplication, et j'ai bien conscience que cela est supposé s'appliquer sur les HINT de tous les objets de l'application.
J'ai créé une petite fonction qui fait ce travail, mais il y a un problème. Elle se termine bien, sans erreur, mais en réalité, elle n'a aucune action effective. Voici mon code:
J'essaie de changer les propriétés HintHidePause, HintHidePause et HintColor. En vérifiant dans la fonction, ces valeurs ont bien été changées. Mais dans le "monde réel", je ne constate aucun changement. Qu'est-ce que j'ai manqué ? Il y a forcément un problème d'incompréhension de ma part.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 function ConfigureHintProperties(app: integer; HHP,HP, R,G,B: integer):integer; stdcall; export; var ClassName: array[0..255] of char; s: string; oldapp: integer; begin result := -1; try if app=0 then exit; GetClassName(THandle(app), ClassName, 255); s := trim(ClassName); if s<>'TApplication' then exit; oldapp := integer(Application.Handle); Application.Handle := THandle(app); Application.HintHidePause := HHP*1000; Application.HintHidePause := HP*1000; Application.HintColor := RGB(R,G,B); Application.Handle := THandle(oldapp); result := 0; except end; end; exports ConfigureHintProperties;
Juste pour compléter l'information: la valeur passée dans le premier paramètre est bien la valeur de Application.Handle du programme appelant. D'ailleurs, ma fonction teste bien cela en vérifiant le ClassName obtenu par ce handle.
(J'espère que j'ai posté ce message dans la bonne rubrique...).
Partager