Por si pudiera servir de pista he encontrado un comportamiento curiosos en un formulario sencillo con 2 botones de prueba utilizando la dll como expliqué en el punto anterior:
Código Delphi
[-]
unit Principal;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,UDllColor;
type
TForm1 = class(TForm)
btnPrueba: TButton;
btnPrueba2: TButton;
procedure btnPruebaClick(Sender: TObject);
procedure btnPrueba2Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.btnPruebaClick(Sender: TObject);
begin
if integer(oWhite) = 1 then
PintarColor(oWhite);
if integer(oRed) = 2 then
PintarColor(oRed);
end;
procedure TForm1.btnPrueba2Click(Sender: TObject);
begin
if integer(oRed) = 2 then
PintarColor(oRed);
end;
Si en el onclick del boton solo se hace una llamada a pintarcolor la dll muestra un valor distinto tanto si se le pasa oWhite como oRed, sin embargo si se llama dos veces seguidas a PintarColor, la dll solo muestra un valor distinto en la primera llamada, la segunda llamada devuelve el valor esperado. Sigo peleandome con esto pero confieso que de momento me veo perdido.