掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ListBoxでアイコン表示するには? (ID:16722)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして。よろしくお願い致します。 現在、下記プログラムでListBoxに、ある階層以下のフォルダ・テキストを表示しています。 ここで、Listboxに表示される各項目の左端にアイコンを表示するにはどうしたらよいのでしょう? 現在のプログラムでは、一覧に表示されたフォルダを選択してボタンを押すと、そのフォルダ内を表示するようになっています。 各項目のアイコン取得方法がわからず、Listbox.Items.AddObject(text,ico)と出来るのかもわからないです。 引き続き調べていますが、何かヒントがありましたら宜しくお願い致します。 以下ソースです。 type TFrmTempl = class(TForm) Subjects: TListBox; Btn1: TBtn; MsgBox: TEzcMsgBox; procedure Btn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private TmpFile: TStringList; FSubject: string; FBody: TStrings; bodyFlg: boolean; res: boolean; strPass: string; end; var FrmTempl: TFrmTempl; procedure TFrmTempl.FormCreate(Sender: TObject); var FInf: TSearchRec; F: TextFile; S: string; begin TmpFile := TStringList.Create; FBody := TStringList.Create; if FindFirst('C:\aaa\bbb\*.*',faDirectory,FInf)=0 then begin try repeat if (FInf.Attr in [faDirectory]) and (FInf.Name <> '.') and (FInf.Name <> '..') then begin Subjects.Items.Add(FInf.Name); TmpFile.Add('C:\aaa\bbb\'+FInf.Name); end; Until (FindNext(FInf) <> 0); finally FindClose(FInf); end{try}; end; if FindFirst('C:\aaa\bbb\*.txt',faAnyFile-faVolumeID,FInf)=0 then begin try repeat if (FInf.Name <> '.') and (FInf.Name <> '..') then begin Subjects.Items.Add(FInf.Name); TmpFile.Add('C:\aaa\bbb\'+FInf.Name); end; Until (FindNext(FInf) <> 0); finally FindClose(FInf); end{try}; end; strPass := 'C:\aaa\bbb\'; end; procedure TFrmTempl.Btn1Click(Sender: TObject); var mt: TStringList; F: TextFile; S: string; FInf: TSearchRec; begin if Subjects.ItemIndex < 0 then exit; if bodyFlg then if FileExists(strPass+Subjects.Items.Strings[Subjects.ItemIndex]) then if MsgBox.Execute('Exception',mdYesNo) = mbNO then Exit; //フォルダを選択した場合展開する if FileExists(strPass+Subjects.Items.Strings[Subjects.ItemIndex]) = false then begin //カレントディレクトリ移動 strPass := strPass + Subjects.Items.Strings[Subjects.ItemIndex] + '\'; //初期化 Subjects.Clear; TmpFile.Clear; //一覧表示 if FindFirst(strPass+'*.*',faDirectory,FInf)=0 then begin try repeat if (FInf.Attr in [faDirectory]) and (FInf.Name <> '.') and (FInf.Name <> '..') then begin Subjects.Items.Add(FInf.Name); TmpFile.Add(strPass+FInf.Name); end; Until (FindNext(FInf) <> 0); finally FindClose(FInf); end{try}; end; if FindFirst(strPass+'*.txt',faAnyFile-faVolumeID,FInf)=0 then begin try repeat if (FInf.Name <> '.') and (FInf.Name <> '..') then begin Subjects.Items.Add(FInf.Name); TmpFile.Add(strPass+FInf.Name); end; Until (FindNext(FInf) <> 0); finally FindClose(FInf); end{try}; end; exit; end; { AssignFile(F,'C:\aaa\bbb\'+FInf.Name); Reset(F); try if not Eof(F) then begin Readln(F, S); Subjects.items.Add(S); TmpFile.Add('C:\aaa\bbb\'+FInf.Name); end; finally CloseFile(F); end; } mt := TStringList.Create; mt.LoadFromFile(TmpFile[Subjects.ItemIndex]); if mt.Count>1 then begin mt.Delete(0); while mt.Count>0 do begin if trim(mt[0])='' then mt.Delete(0) else break; end; end; FSubject := Subjects.Items[Subjects.ItemIndex]; FBody.Assign(mt); mt.free; Close; res := true; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.