Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2015, 19:15   #21
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

У меня есть код но иконки не появляются
Код:
const
  SectionName = 'Game';
var
  Keys: TStringList;
  Inifile: TMemIniFile;
  I: Integer;

  A: array [0..78] of Char;
  s:TIcon;
begin
  ListView1.ViewStyle := vsIcon;
  Inifile := TMemIniFile.Create('Settings.ini');
  Keys := TStringList.Create;
  Inifile.ReadSection(SectionName, Keys);
  for I := 0 to Keys.Count - 1 do
    with ListView1.Items.Add do
    begin
    ListView1.LargeImages := TImageList.Create(nil);
    ListView1.LargeImages := TImageList.CreateSize(32,32);

    StrPCopy(A, Inifile.ReadString(SectionName, Keys[I], ''));
    ListView1.LargeImages.Handle:= ExtractIcon(HInstance, A,0);

    Caption := Keys[I];
    end;
  FreeAndNil(Keys);
  FreeAndNil(Inifile);
Уверен что тут есть ошибка

Можете пример дать загрузки или показать где ошибка в коде выше.
То что в посте 4 там заполнение ListBox`а.

Последний раз редактировалось Stilet; 30.03.2015 в 11:21.
nefakt вне форума Ответить с цитированием
Старый 30.03.2015, 11:16   #22
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кмгм... Я так понял что ты мой пост читал сквозь спустя рукава...
Повторюсь: Пример получения иконки тут http://www.programmersforum.ru/showthread.php?t=20380
Попробуй его для начала, а уже потом будешь и назначать (а точнее рисовать) иконку в списке.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2015, 11:24   #23
nefakt
Форумчанин
 
Регистрация: 25.10.2012
Сообщений: 161
По умолчанию

Я уже написал вот код
Код:
procedure TForm1.FormCreate(Sender: TObject);
const
  SectionName = 'Game';
var
  Keys: TStringList;
  Inifile: TMemIniFile;
  I: Integer;
 
  A: array [0..78] of Char;
  s:TIcon;
begin
  ListView1.ViewStyle := vsIcon;
  Inifile := TMemIniFile.Create('Settings.ini');
  Keys := TStringList.Create;
  s:=tIcon.Create;
  Inifile.ReadSection(SectionName, Keys);
  ListView1.LargeImages:=TImageList.Create(self);
  for I := 0 to Keys.Count - 1 do
    with ListView1.Items.Add do
    begin
      Caption := Keys[i];
      StrPCopy(A, Inifile.ReadString(SectionName, Keys[i], ''));
      ListView1.LargeImages.Handle:= ExtractIcon(HInstance, A,0);
 
    end;
       s:=nil;
  FreeAndNil(Keys);
  FreeAndNil(Inifile);
end;
Он загружает ListView только иконки не отображает
ExtractIcon(HInstance, A,0); вот эта функция вытаскивает иконки из файла но не отрисовывает.

Последний раз редактировалось nefakt; 30.03.2015 в 11:27.
nefakt вне форума Ответить с цитированием
Старый 30.03.2015, 12:15   #24
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Э-э-эх, пичалити... Ниче ты не понял. Как не хотел пытаться разбираться так и по сей день не хочешь.
Вот держи:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses   windows,
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    ImageList1: TImageList;
    ListView1: TListView;
    procedure FormCreate(Sender: TObject);
  private
    procedure AddFileToList(FileName:String);
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
 with ListView1 do begin
  SmallImages:=ImageList1;
  ViewStyle:=vsSmallIcon;
 end;
 AddFileToList('d:\eye.jpg');
 AddFileToList('d:\Словарь нихон.xls');
end;

procedure TForm1.AddFileToList(FileName: String);
var p:pchar;c:Cardinal;i:HICON;o:word;    ic:TIcon;
begin

o:=0;
GetMem(p,255);
c:=FindExecutable(pchar(FileName),
 pchar(ExtractFilePath(FileName)),p);

i:=ExtractAssociatedIcon(HInstance,p,@o);
ic:=TIcon.Create;
ic.Handle:=i;
with ListView1.Items.Add do begin
  Caption:=ExtractFileName(FileName);
  ImageIndex:=ImageList1.AddIcon(ic);
end;

end;

end.
Если и тут не разберешься то я умываю руки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2015, 13:07   #25
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  ic: TIcon;
  i: Integer;
  s: String;
begin
  if OpenDialog1.Execute then begin
    ic := TIcon.Create;
    ic.Handle := ExtractIcon (HInstance, PAnsiChar(OpenDialog1.FileName), 0);
    i := ImageList1.AddIcon (ic);
    ic.Free;

    s := ExtractFileName (OpenDialog1.FileName);
    with ListView1.Items.Add do begin
      Caption := s;
      ImageIndex := i;
     end;
  end;
end;
О-о-о! Stilet уже давно всё написал. И даже лучше.

// -------------------------------------------------------------------
2 вопроса Stilet
1. Почему у меня в uses нужно добавлять ShellAPI (и в D7 и в XE3), а у тебя его нет?
2. Почему не нужно удалять иконку (ic.Free)? Это потому что она потомок TInterfacedPersistent?

Последний раз редактировалось Sibedir; 30.03.2015 в 13:26.
Sibedir вне форума Ответить с цитированием
Старый 30.03.2015, 13:15   #26
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
i := ImageList1.AddIcon (ic);
Опля, несподиванка О_о
А этот метод че, копирует а не назначает? Тогда мой код фтопку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2015, 13:38   #27
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

М-м-м. Фиг знает. Я так понимаю, что именно копирует.
Цитата:
Сообщение от CommCtrl
Код:
function ImageList_ReplaceIcon; external cctrl name 'ImageList_ReplaceIcon';
Я нэ разумию эти ваши апи-механизмы. Так надо или нет?

// --------------------
А. Ну всё допёрло. Если после ic.Free всё работает - значит копирует.

// --------------------
Тут наверное всё дело в том, что сам TIcon получая хэндел иконки создаёт отдельный её экземпляр в памяти. А при добавлении в gui-шный ImageList передаёт ей хэндел. Так получается чё, все иконки (и не только) в памяти дублируются чёли?
Или я вообще не то говорю?

Последний раз редактировалось Sibedir; 30.03.2015 в 13:49.
Sibedir вне форума Ответить с цитированием
Старый 30.03.2015, 14:48   #28
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему у меня в uses нужно добавлять ShellAPI (и в D7 и в XE3), а у тебя его нет?
Потому что это не Делфи )
Цитата:
Так получается чё, все иконки (и не только) в памяти дублируются чёли?
Хендлы скорее всего просто запоминаются... Я вообще-то не в курсе, в генофонд лезть не хочется. Пусть уж ТС потрудится это выяснить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2015, 14:55   #29
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Потому что это не Делфи )
Упс. Лазарус.
Это "{$mode objfpc}{$H+}" не понял
Это "{$R *.lfm}" не заметил

А. Да. Ну это. Спасибо, что-ли
Sibedir вне форума Ответить с цитированием
Старый 30.03.2015, 15:16   #30
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ну это. Спасибо, что-ли

Ну ты... Это... Заходи... Если что.
i.jpg
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с иконками(ошибка с LPCTSTR) - №2 zipo666 Общие вопросы C/C++ 5 11.02.2012 01:16
Работа с иконками Aleksey1989 Помощь студентам 4 01.10.2010 17:25
IdFTP:получить список с иконками tiger Работа с сетью в Delphi 4 28.01.2010 12:01
Проблема с иконками в TreeView [Smarik] Общие вопросы Delphi 4 01.02.2009 21:02
Проблема с иконками в TActionToolBar и ActionMainMenuBar... kalexi Компоненты Delphi 0 28.04.2007 12:58