2009-07-02 9 views

Répondre

1

Le problème peut être sur ImageList_Write du comctl32.dll

// delphi 6 
procedure TCustomImageList.WriteData(Stream: TStream); 
var 
    SA: TStreamAdapter; 
begin 
    SA := TStreamAdapter.Create(Stream); 
    try 
    if not ImageList_Write(Handle, SA) then 
     raise EWriteError.CreateRes(@SImageWriteFail); 
    finally 
    SA.Free; 
    end; 
end; 

// delphi 2005 
procedure TCustomImageList.WriteData(Stream: TStream); 
var 
    SA: TStreamAdapter; 
    ComCtrlHandle: THandle; 
const 
    ILP_DOWNLEVEL = 1; 
begin 
    if CachedComCtrlVer = 0 then 
    begin 
    CachedComCtrlVer := GetFileVersion(comctl32); 
    if CachedComCtrlVer >= ComCtlVersionIE6 then 
    begin 
     ComCtrlHandle := GetModuleHandle(comctl32); 
     if ComCtrlHandle <> 0 then 
     ImageListWriteExProc := GetProcAddress(ComCtrlHandle, 'ImageList_WriteEx'); { Do not localize } 
    end; 
    end; 

    SA := TStreamAdapter.Create(Stream); 
    try 
    { See if we should use the new API for writing image lists in the old 
     format. } 
    if Assigned(ImageListWriteExProc) then 
    begin 
     if ImageListWriteExProc(Handle, ILP_DOWNLEVEL, SA) <> S_OK then 
     raise EWriteError.CreateRes(@SImageWriteFail) 
    end 
    else if not ImageList_Write(Handle, SA) then 
     raise EWriteError.CreateRes(@SImageWriteFail); 
    finally 
    SA.Free; 
    end; 
end; 
7

Avez-vous fait quelque chose de drôle à votre installation Delphi, comme l'ajout d'un delphi32.exe.manifest fichier dans le répertoire de Delphi dans une tentative de rendre l'IDE ont XP ou Vista sur le thème? Ne fais pas ça. Si vous avez ce fichier là, supprimez-le, et vous devriez revenir à la normale.

Le format de la liste d'images a été modifié avec la version 6 de la bibliothèque Common Controls, et Delphi 6 n'est pas capable de l'utiliser. Le manifeste indique à l'EDI d'utiliser la version 6, donc quand il enregistre votre DFM, il utilise ce format. Ensuite, lors du chargement, les versions antérieures ne peuvent plus le lire.

Questions connexes