var
  Sql_Text: string;
  s, FileName: string;
  hc: TIcon;
  Bitmap: TBitmap;
  path1: string;
  path2: string;
  FileInfo: TSHFileInfo;
  BMPHead1: tagBITMAPFILEHEADER;
  BMPHead2: TBitmapInfoHeader;
  BitsTotal: DWord;
  ddd: integer;
begin
  Str := Tmemorystream.Create;
  if dlgOpen1.Execute then
  begin
    FileName := dlgOpen1.FileName;
    path1 := dlgOpen1.FileName;
    path2 := ExtractFilePath(dlgOpen1.FileName);
    FileInfo.iIcon := 0;
    SHGetFileInfo(PChar(dlgOpen1.FileName), 0, FileInfo, SizeOf(TSHFileInfo),
      SHGFI_ICON or SHGFI_SMALLICON); //得到32图标
    Image1.Picture.Icon.Handle := FileInfo.hIcon;
    hc := TIcon.Create;
    Bitmap := TBitmap.Create;
    hc.Handle := FileInfo.hIcon;
    Bitmap.width := hc.width;
    Bitmap.height := hc.height;
    Bitmap.Canvas.Draw(0, 0, hc);
    //Bitmap.PixelFormat := pf24bit;
    Bitmap.SaveToStream(Str);
    //************************
    Str.Position := 0;
    Str.Read(BMPHead1, SizeOf(tagBITMAPFILEHEADER)); //读取BMP文件由文件头
    Str.Read(BMPHead2, SizeOf(TBitmapInfoHeader)); //读取BMP位图信息头
    ddd := BMPHead2.biBitCount;
    //********************
    Bitmap.SaveToFile('c:\ttt.bmp');
    p_w_picpath7.Picture.LoadFromFile('c:\ttt.bmp');
    TurnPic(p_w_picpath7);
    hc.free;
    Bitmap.free;
  end;
end;