AGB  ·  Datenschutz  ·  Impressum  







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

Verkürztes Label mit "..." am Satzende

Ein Thema von Pfoto · begonnen am 17. Jan 2007 · letzter Beitrag vom 17. Jan 2007
Antwort Antwort
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

Verkürztes Label mit "..." am Satzende

  Alt 17. Jan 2007, 13:34
Hallo zusammen,

gibt es in Delphi 7 eine Funktion, die ein
Label mit "..." am Satzende anzeigt, wenn
der Platz nicht ausreicht?

MinimizeName() aus der Unit FileCtrl ist ja
spezielle für Dateinamen / Ordner.

Ich habe schon in der Delphi-Hilfe nach einigen
möglichen Namen gesucht, jedoch nichts gefunden.

Weiß hier jemand Bescheid?


Dank und Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von Lun
Lun

Registriert seit: 4. Feb 2006
122 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Verkürztes Label mit "..." am Satzende

  Alt 17. Jan 2007, 13:43
Sowas vielleicht ?

Delphi-Quellcode:

function TForm1.getkurzenSatz(satz : String):String;
var
 satzKurz : String[40];
begin
   if length(satz) > 40 then
   begin
       satzKurz := satz;
       Result := satzKurz+'...';
   end
   else begin
        Result := satz;
        end;
end;
Musst natürlich deinen String den du ins Label schreiben willst, vorher mit mder Funktion aufrufen und dann ins Label schreiben.

greetz Lun
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Verkürztes Label mit "..." am Satzende

  Alt 17. Jan 2007, 13:44
Hallo,

du kannst die API Funktion DrawText() mit der Format-Option DT_END_ELLIPSIS verwenden.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4

Re: Verkürztes Label mit "..." am Satzende

  Alt 17. Jan 2007, 14:12
Einfach im OI für das Label die Eigenschaft EllipsesPosition auf epEndEllipses oder epWordEllipses setzen.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Verkürztes Label mit "..." am Satzende

  Alt 17. Jan 2007, 14:17
Moin Daniel,

Zitat von sakura:
Einfach im OI für das Label die Eigenschaft EllipsesPosition...
die es in D7 noch nicht gibt...
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Verkürztes Label mit "..." am Satzende

  Alt 17. Jan 2007, 14:19
@Sakura:
Wie oben schon erwähnt, sind die bei Delphi7 im Label noch nich integriert

Aber selbst wenn, ich benutze Skin-Komponenten, die es ebenfalls nicht haben,
deshalb die Suche nach einer reinen Funktion.


@Lun:
Ich wollte es eigentlich von der Länge eines Canvas abhängig machen
und nicht bloß von der Länge der Zeichen.

@marabu:
Wenn es noch keine Delphi7-Funktion dafür gibt, werde ich sie
mir damit basteln.


Dank und Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Berny

Registriert seit: 17. Jan 2007
1 Beiträge
 
#7

Re: Verkürztes Label mit "..." am Satzende

  Alt 17. Jan 2007, 14:36
Delphi-Quellcode:
Procedure TForm1.LabelText(Var L:TLabel; S:String);
 Begin
  L.Hint := s; // Kompletten Text als Hint anzeigen
  If L.Canvas.TextWidth(s) > L.Width Then // Ist der Text breiter als das Label ?
   Begin
     While L.Canvas.TextWidth(s+'...') > L.Width Do // Text kürzen bis er passt...
      Delete(s,Length(s),1);
     L.Caption := s+'...'; // Text + ...
   End
  Else
   L.Caption := s;
 End;
Aufruf für z.B. Label3

LabelText(Label3, 'Das ist der Text der evtl. gekürzt wird.');

mfg. Berny
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Verkürztes Label mit "..." am Satzende

  Alt 17. Jan 2007, 14:56
Danke Bernie!

ich hatte mir parallel dazu gerade etwas eigenes gebastelt
(ähnlich aufgabaut wie "MinimizeName" von Borland):

Delphi-Quellcode:
function MinimizeNameEllipses(const aCaption: string; aCanvas: TCanvas; aMaxLen: Integer): string;
begin
  Result := aCaption;
  aMaxLen:= aMaxLen - aCanvas.TextWidth('...');
  If (aCanvas.TextWidth(Result) > aMaxLen) then
  begin
    while (aCanvas.TextWidth(Result) > aMaxLen) do
      Result:= copy(Result, 0, length(Result)-1);
    result:= result + '...';
  end;
end;

Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#9

Re: Verkürztes Label mit "..." am Satzende

  Alt 17. Jan 2007, 15:03
Hm, wo genau soll nun der Vorteil gegenüber DrawText sein?
Sebastian
Moderator in der EE
  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 08:06 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