Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> ListView и Icon, Что-то не хватает ? 
:(
    Опции темы
Sentynel
Дата 8.1.2005, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 20.12.2004
Где: Deutschland, Cell e

Репутация: нет
Всего: нет



Необходимо в ListView вставить файлы с соответствующими иконами.
Прочитал кучу информации на форумах.
Я использую этот код:

Код

uses ShellAPI;

{$R *.dfm}

procedure  FilesIcon;
var
Fil: TSHFileInfo;
Ser: TSearchRec;
Lis: TListItem;
begin
Form1.ListView.Items.BeginUpdate;
Form1.ListView.Items.Clear;
 if  FindFirst(ExtractFilePath(Application.EXEName) + '*.*', faAnyFile, Ser) = 0  then repeat
   if  Ser.Attr and faDirectory <> 0  then  continue;
   Lis := Form1.ListView.Items.Add;
   Lis.Caption := Ser.Name;
   ShGetFileInfo('*.*', 0, Fil, SizeOf(Fil), SHGFI_LARGEICON or SHGFI_SYSICONINDEX);
   Lis.ImageIndex := Fil.iIcon;
  until  FindNext(Ser) <> 0;
FindClose(Ser);
Form1.ListView.Items.EndUpdate;
end;


procedure  TForm1.FormCreate(Sender: TObject);
var
Fil: TSHFileInfo;
begin
 with  ListView  do
  begin
  LargeImages := TImageList.Create(nil);
  LargeImages.Handle := SHGetFileInfo('*.*', 0, Fil, SizeOf(TSHFileInfo),
  SHGFI_LARGEICON or SHGFI_SYSICONINDEX );
  end;
FilesIcon;
end;


, но икон не видно. Что-то не хватает, а что не знаю, уже мозги кипят! smile
Может кто-нибудь может подсказать? smile
У меня Windows XP и Delphi 6.
Зарание благодарен. smile

PM MAIL ICQ   Вверх
RA
Дата 8.1.2005, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Я так понял тебе нужна ассоциированная с файлом иконка.

тогда так:
Код


var
FolderH:Integer;

...............................

procedure TFilesAddForm.FormCreate(Sender: TObject);
Var
 Fileinfo: TSHFileInfo;
 TmpIcon:TIcon;
 Allocator:IMalloc;
begin
 RegisterDragDrop(Handle, Self as IDropTarget);

 SysImages.Handle := SHGetFileInfo('',0, Fileinfo, sizeof(TSHFileInfo),SHGFI_SMALLICON or SHGFI_SYSICONINDEX );
 SysImages.ShareImages := True;
 TmpIcon:=TIcon.Create;
 SysImages.GetIcon(FileInfo.iIcon,TmpIcon);
 SHGetMalloc(Allocator);
 SysImages.GetIcon(FileInfo.iIcon,TmpIcon);
 Allocator._Release;
 FolderH := Fileinfo.IIcon;
 SysImages.GetIcon(FileInfo.iIcon,TmpIcon);
 SysImages.GetIcon(FolderH,TmpIcon);
 TmpIcon.Free;

end;


function GetImageIndex(Filename: String): Integer;
 var
   Fileinfo: TSHFileInfo;
 begin
   if SHGetFileInfo(PChar(FileName), 0, Fileinfo, sizeof(TSHFileInfo),
       SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME ) <> 0 then
  Result := Fileinfo.IIcon  else  Result := 0;
 end;



//Далее

var
FItem:TListItem;
begin

    FItem:=ListView1.Items.Add;
    FItem.Caption:='Yo!';
    FItem.ImageIndex:=GetImageIndex('MyFile.exe');





Это сообщение отредактировал(а) RAdmin - 8.1.2005, 01:18
PM   Вверх
Sentynel
Дата 8.1.2005, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 20.12.2004
Где: Deutschland, Cell e

Репутация: нет
Всего: нет




И всё равно икон не видно.

PM MAIL ICQ   Вверх
RA
Дата 8.1.2005, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Ты приоттачил В свойствах ListView.smallimages или largeimages компонент immagelist ?

Это сообщение отредактировал(а) RAdmin - 8.1.2005, 02:18
PM   Вверх
Sentynel
Дата 8.1.2005, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 20.12.2004
Где: Deutschland, Cell e

Репутация: нет
Всего: нет



Если "приоттачил " значит обьявить для ListView какой Imagelist использовать то всё на месте.
Если это не то тогда я извеняюсь, но я не понимаю этот "слэнг".
PM MAIL ICQ   Вверх
RA
Дата 8.1.2005, 02:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Это не слёнг это буржуйское слово.
Странно, что у тебя иконок не видно.
Есть ещё одно предположение, но вместо того чтобы заставлять меня гадать может выложишь полный исходник или на мыло мне кинь.

Это сообщение отредактировал(а) RAdmin - 8.1.2005, 02:46
PM   Вверх
Sentynel
Дата 8.1.2005, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 20.12.2004
Где: Deutschland, Cell e

Репутация: нет
Всего: нет



Ну в принципе это и есть весь исходник.
Смысл заключается в том, что я пишу программу и в ней присутствует ListView для отображения файлов "шаблонов". Но на данный момент я хотел на простой форме единственный ListView компонент и определённый путь к папке в которой находятся файлы. Файлы видно а икон нет пробовал кучу исходников из форумов такой же результат, единственный кто показал иконы, это Virtual ListView, но там разобраться я не смог.

Код

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ComCtrls;

type
 TForm1 = class(TForm)
   ListView: TListView;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation
uses ShellAPI;

{$R *.dfm}

procedure  FilesIcon;
var
Fil: TSHFileInfo;
Ser: TSearchRec;
Lis: TListItem;
begin
Form1.ListView.Items.BeginUpdate;
Form1.ListView.Items.Clear;
if  FindFirst(ExtractFilePath(Application.EXEName) + '*.*', faAnyFile, Ser) = 0  then repeat
  if  Ser.Attr and faDirectory <> 0  then  continue;
  Lis := Form1.ListView.Items.Add;
  Lis.Caption := Ser.Name;
  ShGetFileInfo('*.*', 0, Fil, SizeOf(Fil), SHGFI_LARGEICON or SHGFI_SYSICONINDEX);
  Lis.ImageIndex := Fil.iIcon;
 until  FindNext(Ser) <> 0;
FindClose(Ser);
Form1.ListView.Items.EndUpdate;
end;


procedure  TForm1.FormCreate(Sender: TObject);
var
Fil: TSHFileInfo;
begin
with  ListView  do
 begin
 LargeImages := TImageList.Create(nil);
 LargeImages.Handle := SHGetFileInfo('*.*', 0, Fil, SizeOf(TSHFileInfo),
 SHGFI_LARGEICON or SHGFI_SYSICONINDEX );
 end;
FilesIcon;
end;

end.

PM MAIL ICQ   Вверх
RA
Дата 8.1.2005, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Чесно говоря меня интересовали свойства из *.DFM
PM   Вверх
Sentynel
Дата 8.1.2005, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 20.12.2004
Где: Deutschland, Cell e

Репутация: нет
Всего: нет



Ну незнаю что здесь интересного но вот и *.dfm

Код

object Form1: TForm1
 Left = 404
 Top = 108
 Width = 353
 Height = 540
 Caption = 'Form1'
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'MS Sans Serif'
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 PixelsPerInch = 96
 TextHeight = 13
 object ListView: TListView
   Left = 8
   Top = 8
   Width = 329
   Height = 489
   Columns = <>
   TabOrder = 0
 end
end

PM MAIL ICQ   Вверх
RA
Дата 8.1.2005, 03:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Кароче забей вот готовый код

Присоединённый файл ( Кол-во скачиваний: 43 )
Присоединённый файл  TEST.rar
PM   Вверх
Sentynel
Дата 8.1.2005, 03:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 20.12.2004
Где: Deutschland, Cell e

Репутация: нет
Всего: нет



Спасибо за помощь, но можно всё тоже самое но ListView.ViewStyle в режиме vsIcon ?
PM MAIL ICQ   Вверх
RA
Дата 8.1.2005, 05:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Да
Добавлено @ 05:04
или тебе код нужен ?
PM   Вверх
Sentynel
Дата 9.1.2005, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 20.12.2004
Где: Deutschland, Cell e

Репутация: нет
Всего: нет



Да, код не помешал бы. А тог не понятно почему, включаешь ListView.ViewStyle в режим vsIcon и иконы проподают.
PM MAIL ICQ   Вверх
RA
Дата 9.1.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Sentynel

Либо SHGFI_SMALLICON либо SHGFI_LARGEICON

Меняется вот в этой строке:

Код

SysImages.Handle := SHGetFileInfo('',0, Fileinfo, sizeof(TSHFileInfo),{SHGFI_SMALLICON}SHGFI_LARGEICON or SHGFI_SYSICONINDEX );











PM   Вверх
Sentynel
Дата 9.1.2005, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 20.12.2004
Где: Deutschland, Cell e

Репутация: нет
Всего: нет



Цитата
Либо SHGFI_SMALLICON либо SHGFI_LARGEICON


Сразу пробовал, это только вгружает в ImageList иконы 32*32, но ListView остаётся в vsReport, а когда переключаешь в vsIcon икон нет.
PM MAIL ICQ   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.2047 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.