Thema: Delphi String mit ... abkürzen

Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: String mit ... abkürzen

  Alt 20. Mär 2008, 13:44
Ich hab´s mir selbst so gebastelt:

Delphi-Quellcode:
function TVCustom.PaintCanvas: TCanvas; // damit´s auch mit den AlphaSkins funktioniert
begin
  if SkinData.Skinned then
    Result := SkinData.FCacheBMP.Canvas
  else
    Result := Canvas;
end;

procedure TVCustom.WriteValue(X, Y: Integer; S: String; TextColor: TColor = clWindowText);
var Rect: TRect;
    H, P: String;
    Flags: Longint;
begin
  if not (csDesigning in ComponentState) then
  begin
    if not (csDestroying in ComponentState) then
    begin
      with PaintCanvas do begin
        Font.Color := TextColor;
        Inc(X, 3);
        Brush.Style := bsClear;
        Rect := ClipRect;
{
... freien Bereich evtl. eingrenzen
        if CheckBoxVisible then Rect.Left := Rect.Left + CheckBoxData.Width;
        if ImageVisible then Rect.Right := Rect.Right - ImageData.Width;
}

        Rect.Left := Rect.Left + X;
        Rect.Top := Rect.Top + Y;
        H := S;
        P := '';
// hier wird die Länge ermittelt...
        while (TextWidth(S + P) >= Rect.Right - Rect.Left) and (S <> '') do
        begin
          Delete(S, Length(S), 1);
// ... evtl. mit 3 Punkten ersetzt
          if P = 'then P := '...';
        end;
        S := S + P;
        Flags := 0;
        DrawText(Handle, PChar(S), -1, Rect, Flags);
// ... und wenn der Platz nicht reicht, der Text im Hint angegeben
        if P <> 'then
        begin
          ShowHint := True;
          Hint := H;
        end
        else begin
          ShowHint := False;
          Hint := '';
        end;
      end;
    end;
  end;
end;
  Mit Zitat antworten Zitat