[ markoub @ 08.02.2003. 14:40 ] @
Postoji li neka ugradjena komponenta za prikazivanje liste fajlova nekog direktorijuma? Nasao sam samo onu u okviru Win3.11 ali meni trebaju i ikonice, sto u 3.11 nije bilo podrzano.
Hvala unapred
[ Zmaj @ 10.02.2003. 05:33 ] @
Koji delphi imas?
[ goky2002 @ 10.02.2003. 10:05 ] @
Postavi ShowGlyphs na true
[ markoub @ 10.02.2003. 13:43 ] @
Postavio sam taj property na true ali su ilonice iz Win3.11 ruzne i nisu iste kao ove.
Sto se tice Delphi-a imam i 5.0 i 7.0, ali u sedam nemam socket kontrole iz petice (zamenjene su nekim kontrolama o kojima pojma nemam), a u sedmici znam da ima FileListBox kakav mi treba, ali ne mogu da prekompajliram peticin dokument u sedmicu. Mogu li nekako te kontrole iz petice da dodam sedmici?
[ Zmaj @ 11.02.2003. 03:27 ] @
Probaj sa ShellListView ili tako nesto nalazi se na samples strani. Imas tamo jos toga. Naravno podrazumeva se da su komponente instalirane.
[ Ilija Studen @ 18.02.2003. 02:06 ] @
Hoces ikone? Evo ti procedure koja vraca HICON selektovanog fajla/direktorijuma/drajva:

function GetIconHandle(FileName: string; Modifier: TIconModifier): THandle;
const
aModifier:array [TIconModifier] of integer = (0, SHGFI_LINKOVERLAY, SHGFI_SELECTED, SHGFI_OPENICON, SHGFI_SHELLICONSIZE, SHGFI_SMALLICON);
var
sfi: TSHFileInfo;
begin
SHGetFileInfo(PChar(FileName), 0, sfi, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_ICON or aModifier[Modifier]);
Result := sfi.HICON;
end;

TIconModifier = (imNormal, imOverlay, imSelected, imOpen, imShellSize, imSmall);

Kada imas neku ikonu (Ikona: TIcon) onda teras:
Ikona.Handle := GetIconHandle('c:\NekiDirekrojum');

Nadam se da ce ti posluziti. Reci veliko hvala JEDI-jevcima...
[ Ilija Studen @ 18.02.2003. 02:29 ] @
Izvedi klasu iz TCustomListView i uvedi ovaj metod:

Code:
procedure ChangeDir(const Dir: string);
var
  SearchRec: TSearchRec;
  TempIcon: TIcon;
begin
  if DirectoryExists(Dir) then
    begin
      if FindFirst(Maska, Attr, SearchRec) = 0 then
        repeat
          with Items.Add do
            begin
              Caption := SearchRec.Name;
              TempIcon := TIcon.Create;
              try
                TempIcon.Handle := GetIconHandle(Dir + '\' + SearchRec.Name, itNormal);
                LargeImages.AddIcons(TempIcon);
              finally
                TempIcon.Free;
              end; 
              ImageIndex := Items.Count - 1
            end;
        until FindNext(SearchRec); 
        FindClose(SearchRec);
    end;
end;


Primetices Masku i Attr kao ulaz procedure FindFirst. Njih moras definisati (smor mi je da i to sad kucam), a kao vodilja nek ti posluzi kod koji je napisan u TFileListView. Ovde pozivas i funkciju GetIconHandle (zahteva ShellAPI). Kao ulazni parametar ide IconModifier (pogledaj definiciju i skontaces sta znaci):

Code:
  TIconModifier = (imNormal, imOverlay, imSelected, imOpen, imShellSize, imSmall);


Ovo je sama f-ja:

Code:
function TisCommander.GetIconHandle(FileName: string; Modifier: TIconModifier): THandle;
const
  aModifier:array [TIconModifier] of integer = (0, SHGFI_LINKOVERLAY,
                                                SHGFI_SELECTED,
                                                SHGFI_OPENICON,
                                                SHGFI_SHELLICONSIZE,
                                                SHGFI_SMALLICON);
var
  sfi: TSHFileInfo;
begin
  SHGetFileInfo(PChar(FileName), 0, sfi, SizeOf(TSHFileInfo),
                SHGFI_SYSICONINDEX or SHGFI_ICON or aModifier[Modifier]);
  Result := sfi.HICON;
end;


Napomena, ovaj kod je kucan iz glave i ne znam da li tacno radi (ovako kako je napisan nisam siguran, ali kad se malo sredi sigurno radi - provereno). Nadam se da ce ti pomoci. A ako ti je smor da pravis novu komponentu (ili volis Shell) onda jednostavno upotrebi neku od Shell komponenti (recimo Plasmatech ili Ortus Shell komponente - lepo izgledaju, savrseno rade, a besplatne su za nekomercijalne aplikacije, bez nag screenova i slicnih gluposti --> www.delphipages.com ).