Meine VM mit Linux Mint 18.1 holt sich ebenfalls das Icon mit der Größe 32x32, die VM mit Ubuntu dagegen das mit der Größe 128x128.
Am Ende von TCustomIcon.ReadStream wird eine Routine "CheckRequestedSize" aufgerufen, in der über GetSystemMetrics(SM_CXICON) and ...(SMCYICON) die im aktuellen Betriebssystem/Theme gewünschte Standard-Icon-Größe ermittelt wird. Dies bestimmt dann den Index für das auszuwählende Bild (Current).
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
pic: TPicture;
begin
pic := TPicture.Create;
pic.LoadFromFile('project1.ico');
Caption := 'Icon width: ' + IntToStr(pic.Width) + ' Current: ' + IntToStr(pic.Icon.Current) +
' SystemMetrics(SM_CXICON): ' + IntToStr(GetSystemMetrics(SM_CXICON));
pic.Free;
end;
GetSystemMetrics ergibt bei mir für Windows und Mint den Wert 32, für Ubuntu 128; entsprechend hat der Bildindex Current bei Windows/Mint den Wert 4, bei Ubuntu den Wert 1.