2011-11-08 6 views
1

何年も何もプログラミングしていないので、私は今まで学んだこと以上のものを忘れてしまいました。私は単純なファイル検索ルーチンから始め、見つかったファイルを複数の列のリストボックスに配置しました。私が見つけたコンポーネントは、Delphi3000.comのMultiColListBox.pasと呼ばれていました。並べ替えルーチンに2つのイベントを追加し、並べ替えを有効にするときに空のリストボックスエラーを修正しました。Canvas.TextOut透明な末尾の空白を許可するように見えます

このコードを使用して2つの列が定義され、それぞれの長さが20に設定され、最初の列のテキスト(項目)の長さは100文字、2列目の最初の項目の長さは20文字です最初の列のテキストの末尾にある空白のテキストの下に表示されます。

コンポーネントでは、(下のコードにリンクする)列が描画されます。

procedure TMultiColListBox.ListBoxDrawItem(Control : TWinControl; 
             Index : Integer; 
             Rect : TRect; 
             State : TOwnerDrawState); 

私はブラシをしっかりと設定しようとしました。私は最終的にそれが何も後ろにテキストの座標を描いていることに気づいた。したがって、私たちは望ましくない透明な効果を得ています。

通常、私は単純なもの、これまでのところ見落としています(木の森を見ることはできません)。この問題を解決するにはどうすればよいですか? (このコンポーネントは、その作品の多くが、大きな再学習経験を働いていない多くの項目があります

CODEへのリンク:。!。http://www.delphi3000.com/articles/article_3360.asp MultiColListBox

おかげ

ジョン

PSを私ができますカットをフォーマットして長いコードセットや関数全体をこのフォーラムに貼り付けることはできません(上のように簡単なものです)ので、Delphi3000.comのcompenentコードへのリンクを提供しました。

+0

問題のコードは、おそらく長方形内にテキストを描画している可能性があります。 「透明な後続領域」は、描画される矩形の境界です。デュアルモニターシステムに代わるものはほとんどなく、 'Paint'メソッドで要素を実行しながら、コードをシングルステップでデバッグし、コントロールのレンダリング方法を確認します。ここの誰もこのデルファイ3000コントロールを使用していないので、私は本当にあなたが "自分でそれを修正する"という選択肢を持っているか疑問に思います。あなたはソースコードを持っていますので、それを使用してください。あなたは学習経験が必要だと言った。ペイント方法とその子供を一歩踏み出すことを学ぶ。 –

+0

Delphi3000のリンクされたコードは本当に不自由です。もうやめろ。 –

+0

私は「テキストの座標を描く」または「透明な効果」が何を意味するのか分かりません。画像を投稿してください。 (長いブロックのコードを投稿しないようにしていますが、必要な場合は短いブロックの書式設定と同じです:コードを貼り付けて選択し、編集ウィンドウの上の '{}'ボタンを押して4つのスペースを挿入します編集ボックスの下にあるプレビューを見て、正しいかどうかを確認してください。) –

答えて

5

この10年の古いコードと戦うのではなく、リストビューに切り替えるだけでTListViewとなり、ViewStylevsReportに設定してください。これにより、ネイティブで最新のWindowsリストコントロールを使用した複数列のリストが表示されます。

これはあなたの質問に直接答えるものではありませんが、あなたの問題をあなたが使用しようとしているコードよりもはるかに優れていると思います。

+0

ありがとうDavid!私は知っている...私は多くのものを再学習しようとしており、これは私にとっては良い再学習の課題でした。私は透明性に困惑しているので、私は尋ねると思った... – John

+0

またはさらに簡単にTDrawGridを使用することです(私の実験から少なくとも) –

+0

私は、標準的なWindowsのリストビューを好む。 –

関連する問題