AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String mit ... abkürzen

Ein Thema von Yheeky · begonnen am 1. Aug 2002 · letzter Beitrag vom 24. Mär 2008
 
Nuclear-Ping
(Gast)

n/a Beiträge
 
#15

Re: String mit ... abkürzen

  Alt 21. Mär 2008, 10:31
Zitat von marabu:
Kannst du mein Beispiel (Text und Rect) so anpassen, dass ich dein Problem erkenne?
Hi marabu,

erstelle dir ein neues Projekt. Auf die Form packst du eine TListView und eine TImageList. Die ImageList setzt du auf Width 2 und Height 100. Den TListView auf vsReport, zwei Spalten. Spalte 1 Breite 32, Spalte 2 100. Die ImageList weißt du der SmallImages-Property der ListView zu.
Delphi-Quellcode:
unit LView_DrawText_TestU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, ComCtrls;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    ImageList1: TImageList;
    procedure ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure ListView1CustomDrawSubItem(Sender: TCustomListView;
      Item: TListItem; SubItem: Integer; State: TCustomDrawState;
      var DefaultDraw: Boolean);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    TestStr: String;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses
  StrUtils;

{$R *.dfm}

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  //
end;

procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
var
  Rect: TRect;
  a, w: Integer;
begin
  DefaultDraw := FALSE;

  w := 0;
  for a := 0 to SubItem - 1 do
    w := w + ListView1.Columns[a].Width;

  Rect.Left := (Item.Left - 4 + w) + 2;
  Rect.Top := Item.Top + 2;
  Rect.Right := Rect.Left + ListView1.Columns[SubItem].Width - 2;
  Rect.Bottom := Item.Top + ListView1.SmallImages.Height - 2;

  ListView1.Font.Style := [];

// ListView1.Canvas.DrawFocusRect(Rect);
  case SubItem of
    1: begin
         ListView1.Canvas.FillRect (Rect);
         DrawText (ListView1.Canvas.Handle, PChar (TestStr), Length (TestStr),
                   Rect, DT_WORDBREAK or
                         DT_NOPREFIX or
                         DT_WORD_ELLIPSIS);
       end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  li: TListItem;
  a: Integer;
begin
  TestStr := DupeString('Der Affe den Sie meinen heißt Parmesan ', 5);
  for a := 1 to 10 do
    begin
      li := ListView1.Items.Add; // Leak erstmal egal
      li.Caption := inttostr (a);
    end;
end;

end.
In dem Beispiel funktioniert DT_WORD_ELLIPSIS nicht. Er schneidet den Text nicht ab.
DT_END_ELLIPSIS hat hier allerdings funktioniert. Aber im richtigen Projekt gabs da auch Probleme.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz