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;
よろしくお願いします
TListItem.SubItems は TStrings 型ですね。
ですから
> 【SubItemのインデックスが3の時のリスト内容】
は Item.SubItems[3] じゃないですか。
Item.SubItems[3]でやってみましたが、うまくいきませんでした。
正確には、Item.SubItems[3]にすると、.Text等プロパティを呼び出すことができないんですけど、どういうことなんでしょう。
後,追加で質問なんですが
Item.SubItems.Text(リストビュー内に表示される文字列を調べるにはこれで良いですよね)
の文字列の中身に該当する文字列がある場合を調べる関数は、Delphiには有るのでしょうか。
例)
SubItems.Text内に「正常」という文字がある場合は、真を返すなど
よろしくお願いします
> Item.SubItems[3]でやってみましたが、うまくいきませんでした。
> 正確には、Item.SubItems[3]にすると、.Text等プロパティを呼び出すことができないんですけど、どういうことなんでしょう。
具体的にどんなにコードを書いて、その結果のどこが問題なのかを
書かれるとよいと思います。
結構レスが付きそうな質問なので、もったいない感じがします。
> Item.SubItems.Text(リストビュー内に表示される文字列を調べるにはこれで良いですよね)
サブアイテムの各文字列が改行で区切られて返ってくると思うのですが、
それでよいのですか?
つまり、個々ではなくて、全部が連結されてしまいます。
> 文字列の中身に該当する文字列がある場合を調べる関数は、Delphiには有るのでしょうか。
SubItemsはTString型なので、IndexOfメソッドなどが使えます。
> Item.SubItems[3]にすると、.Text等プロパティを呼び出すことができないんですけど
えーと、ヘルプで TStrings を読まれることをお勧めします。TStrings は
文字列のリストを保持する抽象クラスです。Item.SubItems[3] はそれ自体
が文字列で、リストの4番目です。 項目のキャプションを入れると、5番目の
カラムのテキストに相当しています。Items.SubItems.Text はリストの文字
列全部です。
TStrings について知ると、今回の質問の内容も違ってくるんじゃないですか?
> SubItemsはTString型なので、IndexOfメソッドなどが使えます。
ごめんなさい。TString型はTStrings型の間違いです。
ツイート | ![]() |