Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zeilen in einer Listbox auf eine GEMEINSAME Breite verkürzen (https://www.delphipraxis.net/37758-zeilen-einer-listbox-auf-eine-gemeinsame-breite-verkuerzen.html)

Nogge 9. Jan 2005 21:31


Zeilen in einer Listbox auf eine GEMEINSAME Breite verkürzen
 
Hallo Community,
Ich habe folgendens Problem: Ich möchte alle Zeilen in einer Listbox auf eine Breite verkürzen, was jedoch nur bedingt bei mir funktioniert und damit nicht meinem Wunsch entspricht. Ich hatte mir vor kurzem eine eigene Procedure dafür geschrieben, danach einige aus dem Forum benutzt, jedoch wurden nicht alle Strings bei einer bestimmten vorgeschriebenen Breite abgeschnitten. Einige Zeilen waren länger als andere, was mich total stört, da es so kein schönes Aussehen darstellt^^ Ich weiß, dass man dabei mit Canvas.TextWidth() arbeitet, was ich selbst ja bereits in meiner procedure getan habe, aber trotzdem ist diese Methode nicht so exakt.
Bitte helft mir...^^

mfg Nogge

SirThornberry 9. Jan 2005 21:34

Re: Zeilen in einer Listbox auf eine GEMEINSAME Breite verkü
 
auf ganz genau die gleiche länge bekommst du es nur wenn du eine schriftart verwendest wo alle zeischen gleich breit sind oder in jeder zeile das gleiche steht. Ich benutz folgende Funktion (vor langer zeit mal selbst geschrieben da man sowas doch häufig braucht)
Delphi-Quellcode:
function getPunktPunktText(Text: String; Leinwand: TCanvas; maxbreite: Integer; PointCount: Byte = 3): String;
var LPoints: String;
begin
  setlength(LPoints, PointCount);
  FillChar(LPoints[1], PointCount, Integer('.'));
  LPoints := LPoints + ' ';
  if (length(text) > 4) and (leinwand.TextWidth(text) > maxbreite) then
  begin
   while (length(text) > 4) and (leinwand.TextWidth(text + LPoints) > maxbreite) do
    text := copy(text, 1, length(text)-1);
   text := text + LPoints;
  end;
  result := Text;
end;

Nogge 9. Jan 2005 21:55

Re: Zeilen in einer Listbox auf eine GEMEINSAME Breite verkü
 
Vielen Dank SirThornberry !
Das mit der Schrift wollte ich hören. Die Function ist genauso eine, wie ich sie selbst gebaut und im Forum gefunden hab^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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