2016-12-19 10 views
0

データベースからlistviewコンポーネントに画像を表示する必要があります。私はこのようなものを試しましたが、失敗しました。DelphiでListViewに画像を表示する方法は?

例:私が間違って

var 
    bmp: TBitmap; 
    blob :TBLOBField; 

begin 
     bmp := TBitmap.Create; 

     blob := TBlobField.Create(nil); 

     //get image from blob column 
     //image is type bmp 
     blob := //here i set bmp image from db; 

      bmp.Assign(blob); 
      //ListView1 viewstyle is vsReport 

      ListView1.LargeImages.Add(bmp,nil); //there is Runtime error access violation at address 

end; 

をやっていますか?

+1

※「エラーがあります」※詳しくお伝えできます。コンパイラエラー?ランタイムエラー?多くの初心者のプログラマーは、エラーメッセージには有用な情報が含まれていないと考え、単にその内容を無視します。あなたが進めたいのであれば、エラーメッセージを解釈する方法を学ぶことをお勧めします。それらを読みます。それらを理解してみてください。それをやり始めると、それらについての質問をするときに、そのままエラーメッセージを含めなければならないことも分かります。 –

+1

それ以外にも、私たちに[mcve]をください。あなたのDBからイメージをロードする方法はおそらく分かっているので、すべてのDBコードを削除してください。代わりに、リストビューに画像を表示しようとする完全なコードを提供してください。画像は実行時にいくつか愚かなやり方で作成することができますが、内容が何であるかは関係ありません。次に、あなたのコントロールがどのようにセットアップされているかを知っています。その 'ViewStyle'が何であるかなど。 –

+0

最後に、ドキュメントの例を使用できます。 http://docwiki.embarcadero.com/CodeExamples/en/ViewStyleProperty_(Delphi) –

答えて

3

アクセス違反のもっともらしい説明は、LargeImagesに何も割り当てられていないため、nilです。あなたのフォームにイメージリストをドロップし、そのイメージリストを参照するようにLargeImagesを設定します。それはあなたのアクセス違反を解決します。

必ず画像リストには、すべての画像の寸法が同じである必要があります。つまり、リストビューに表示するすべてのイメージの寸法が同じでなければなりません。イメージリストに追加する前に、一般的なディメンションと一致するように生のイメージのサイズを変更する必要があります。

関連する問題