OnCustomDrawSubItemで上位項目の文字列を取得するには


yuki  2004-04-03 05:58:15  No: 8151

OnCustomDrawSubItemのイベント内で、下位項目の処理中に上位項目のデータ画ほしい場合,どうすればよろしいでしょうか。
詳しく言いますと、
OnCustomDrawSubItemイベントのSubItemのインデックスが「9」の時に、
SubItemのインデックスが「3」の時のリストのデータを使用しようとする場合ナンですが・・・

どういう処理にするかを下記に簡単に書いてみますね

procedure TIVNTVIEW_F.LV00000001FontColor3(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
var
  wStr : String;
begin
    if SubItem = 9 then
      begin
        if (【SubItemのインデックスが3の時のリスト内容】)= '情報' then
          begin
            // ここでは、インデックスが9の時のリスト内容のチェック
            if Item.SubItems.Text = '正常に終了しました。' then
              begin
                Sender.Canvas.Font.Color := clBlue;
              end;
          end;
      end;
end;

よろしくお願いします


jok  2004-04-03 06:41:28  No: 8152

TListItem.SubItems は TStrings 型ですね。
ですから

> 【SubItemのインデックスが3の時のリスト内容】

は Item.SubItems[3] じゃないですか。


yuki  2004-04-03 21:01:28  No: 8153

Item.SubItems[3]でやってみましたが、うまくいきませんでした。
正確には、Item.SubItems[3]にすると、.Text等プロパティを呼び出すことができないんですけど、どういうことなんでしょう。

後,追加で質問なんですが
Item.SubItems.Text(リストビュー内に表示される文字列を調べるにはこれで良いですよね)
の文字列の中身に該当する文字列がある場合を調べる関数は、Delphiには有るのでしょうか。
例)
  SubItems.Text内に「正常」という文字がある場合は、真を返すなど
よろしくお願いします


ふぐちゃん  2004-04-03 21:41:42  No: 8154

> Item.SubItems[3]でやってみましたが、うまくいきませんでした。
> 正確には、Item.SubItems[3]にすると、.Text等プロパティを呼び出すことができないんですけど、どういうことなんでしょう。
具体的にどんなにコードを書いて、その結果のどこが問題なのかを
書かれるとよいと思います。
結構レスが付きそうな質問なので、もったいない感じがします。

> Item.SubItems.Text(リストビュー内に表示される文字列を調べるにはこれで良いですよね)
サブアイテムの各文字列が改行で区切られて返ってくると思うのですが、
それでよいのですか?
つまり、個々ではなくて、全部が連結されてしまいます。

> 文字列の中身に該当する文字列がある場合を調べる関数は、Delphiには有るのでしょうか。
SubItemsはTString型なので、IndexOfメソッドなどが使えます。


jok  2004-04-03 21:47:27  No: 8155

> Item.SubItems[3]にすると、.Text等プロパティを呼び出すことができないんですけど

えーと、ヘルプで TStrings を読まれることをお勧めします。TStrings は
文字列のリストを保持する抽象クラスです。Item.SubItems[3] はそれ自体
が文字列で、リストの4番目です。 項目のキャプションを入れると、5番目の
カラムのテキストに相当しています。Items.SubItems.Text はリストの文字
列全部です。

TStrings について知ると、今回の質問の内容も違ってくるんじゃないですか?


ふぐちゃん  2004-04-04 04:50:42  No: 8156

> SubItemsはTString型なので、IndexOfメソッドなどが使えます。
ごめんなさい。TString型はTStrings型の間違いです。


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

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






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