1

Item.Caption と SubItems に 600 以上 (またはそれ以上) の文字を追加する必要がありますが、テキストが N 文字より長い場合、TListView がテキストを完全にカットすることがわかります。

私はこれを試しました:

procedure TForm1.FormCreate(Sender: TObject);
var
 i1: Integer;
 s: String;
begin
 for i1 := 0 to 690 do
  s := s + IntToStr(i1) + '-';

 with ListView1.Items.Add do
 begin
   Caption := s;
   SubItems.Add(s);
 end;
end;

そして、 ListView1.OwnerDraw := True; を有効にしました。

下の図からわかるように、Column1 のテキストが Column2 に重なっています。

ここに画像の説明を入力

誰でもこの問題を解決するのを手伝ってくれますか?

4

1 に答える 1

4

次の(より合理的な)コードを使用した Delphi 2007 の簡単なテスト アプリケーションは、259 文字の長さである でListViewAnsi 文字の表示を停止することを示しています。88-8

procedure TForm4.FormCreate(Sender: TObject);
var
  s: string;
  i: Integer;
  Item: TListItem;
begin
  s := '';
  for i := 0 to 89 do
    s := s + '-' + IntToStr(i);

  // Set the width of the first column so there's room for all
  ListView1.Columns[0].Width := ListView1.Canvas.TextWidth(s) + 10;

  Item := ListView1.Items.Add;
  Item.Caption := s;
  Item.SubItems.Add(s);

  // Display length of string actually displayed, which
  // is one short of the total length (the final '9' in '89'
  // is truncated), in the form's caption.
  Caption := IntToStr(Length(s) - 1);
end;

これに (Windows API で必要な) ヌル ターミネータを追加すると、260 文字になります。これは、MSDN のドキュメントによると、表示されるテキストの最大長です。メンバーはさらに保存できますが、LVITEM.pszText表示されません。

(リンクを提供してくれた @SertacAkyuz のおかげで、見つける必要はありませんでした。)

これは、RegEdit を使用して自分で確認できます。その制限を超えるレジストリ値を見つけます (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Arbiters\AllocationOrderたとえば、すぐに見つかりました)。RegEdit は、Data列をどれだけ広くドラッグしても表示を切り捨てますが、マウスをその上に置くと、1 行のヒントで全文が表示されます。(もちろん、ヒントウィンドウをスクロールすることはできないので、複数のワイドモニターを持っていないと、すべてを読むことはできません.)

コードを投稿していないため、コードの何が問題なのかを言うことは不可能OwnerDrawです (もしあれば)。描画を行うためのイベントを提供しないと、設定するだけでOwnerDraw := True;は何もしません。

コメントとして:私があなただったら、あなたのデザインを再考します. これは UI の観点からはひどいものであり、その理由を説明できます。上記のコードを元の690値に変更して、コードを実行します。テキストが同じポイントで停止しているにもかかわらず、最初の列がすべてを表示するのに十分な幅に実際に設定されていることがわかります ( 88-8)。ただし、2 番目の列を見つけるためにスクロールし続けなければならないことに注意してください。私があなたのソフトウェアを使用していたら、それは悪臭を放つでしょう。

IMO、キャプションに少量のテキストを表示し、ユーザーがクリックして実際にすべてを読みたい、または表示したいことを示す場合は、ラベルまたはメモ コントロールに全文を表示する方がはるかに良いでしょう。ポップアップウィンドウで。

于 2013-11-09T19:19:09.260 に答える