掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
XPManでListViewの項目が表示されなくなる (ID:27550)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
どうもお手上げ状態です。 テストプログラムにブレイクダウンしてテストしました。 記述を大幅に省いてますので、数値文字はゴミ表示になります。 本プログラムではサムネイルを表示させるプログラムなので・・・ { ListView OwnerData := True; OwnerDraw := False} procedure TForm1.Button1Click(Sender: TObject); begin ListView.Items.Clear; FSL.Clear; end; {データ設定} procedure TForm1.Button2Click(Sender: TObject); var i :Integer; begin for i := 0 to 1 do begin FSL.Add(IntToStr(i)); ListView.Items.Add; end; end; procedure TForm1.FormCreate(Sender: TObject); begin FSL := TStringList.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin FSL.Free; end; procedure TForm1.ListViewCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var ARect: TRect; begin ARect := Item.DisplayRect(drIcon); ListView.Canvas.FillRect(ARect); end; procedure TForm1.ListViewData(Sender: TObject; Item: TListItem); begin Item.Caption := FSL.Strings[Item.index]; end; OnCustomDrawItemイベントを記述すると、XPMan有効かつOnDrawをFalseに するとIndexのエラーになるようです。 更にXPManの有効・無効では処理の流れが違うようです。 XPManの無効では{データ設定}を一通り処理した後に、OnCustomDrawItemと OnDataイベントで相互に処理しているのに対し、XPManが有効では{データ設 定}のItems.addから其の都度OnCustomDrawItemとOnDataイベントで相互に処 理しているようです。 最終的にOnCustomDrawItemとOnDataイベントで相互に処理しているようです が、最後のOnDataイベント内でItem.Index値が途方も無い数値をもってきて いるようで、この時点でIndexのエラーが表示されているようでした。 と、まあ判ったのですが何で?と、言うよりどうすりゃいいいの? (;_;)
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.