AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Zeilen in einer Listbox auf eine GEMEINSAME Breite verkürzen
Thema durchsuchen
Ansicht
Themen-Optionen

Zeilen in einer Listbox auf eine GEMEINSAME Breite verkürzen

Ein Thema von Nogge · begonnen am 9. Jan 2005 · letzter Beitrag vom 9. Jan 2005
Antwort Antwort
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#1

Zeilen in einer Listbox auf eine GEMEINSAME Breite verkürzen

  Alt 9. Jan 2005, 21:31
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Zeilen in einer Listbox auf eine GEMEINSAME Breite verkü

  Alt 9. Jan 2005, 21:34
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;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#3

Re: Zeilen in einer Listbox auf eine GEMEINSAME Breite verkü

  Alt 9. Jan 2005, 21:55
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^^
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:33 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