関数を作る時の制限?

解決


チャート  2005-11-20 23:40:25  No: 18829

ListViewのアイテムがしょっちゅう書き換わるので、
書き換えるコードを関数にまとめてしまおうとしたのですが、
未定義の識別子 : 'ListView1'と出てコンパイルできません。
コンポーネントの動作を関数に組み込む事は不可能なんでしょうか?
どなたか解決法を教えて下さい。


チャント  2005-11-20 23:47:55  No: 18830

使用している環境を記載。
少なくともその関数のコードを提示。

答えようがありません。


チャート  2005-11-21 00:12:13  No: 18831

情報が足りなく、申し訳ありませんでした。
Delphi6personalでコードを書いています。
以下が問題のコードです。アプリのあるフォルダのtxtファイルを、
すべてListViewに書き出していくというものです。

procedure ListViewRefresh;
var
    path : string ;
    rs : integer ;
    sr:TSearchRec;
begin
  ListView1.Clear;
  path := ExtractFilePath(Application.ExeName)+'*.txt';
  rs := FindFirst(path,faAnyFile,sr);
  while rs=0 do begin
    listview1.Items.Add.Caption:=(sr.Name);
    rs:=FindNext(sr);
  end;
  FindClose(sr);

end;

これでコンパイルをしようとすると未定義の識別子 : 'ListView1'と出てしまいコンパイルができません…。


りおりお  2005-11-21 00:45:29  No: 18832

> これでコンパイルをしようとすると未定義の識別子 : 'ListView1'と出てしまいコンパイルができません…。

それは普通の関数ですよね。通常は ListView1 などは Form1 のフィールドに
なってますから Form1.ListView1 としてアクセスしないとダメです。

わたしだったら、

procedure ListViewRefresh(LV: TListView);
var
    path : string ;
    rs : integer ;
    sr:TSearchRec;
begin
  LV.Clear;
....

などとしますが。


チャート  2005-11-21 04:39:35  No: 18833

りおりお様、ありがとうございます
思い通りにできました


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加