Zitat von
freak4fun:
ich habe es jedenfalls mit einem TButton nicht zweizeilig hinbekommen wie dort beschrieben.
@ TRF:
ich habe mal kurz in die OvalBtn.pas reingeschaut. Dort findest Du
Delphi-Quellcode:
{ Caption zeichnen }
if Caption<>'
'
then begin
{Position ermitteln}
TextLeft:=(width-TextWidth(Caption))
shr 1;
if Assigned(FGlyph)
and (FNumGlyphs>0)
and (FLayout=blGlyphRight)
then
TextLeft:=Dest.Left-TextWidth(Caption)-FSpacing;
if Assigned(FGlyph)
and (FNumGlyphs>0)
and (FLayout=blGlyphLeft)
then
TextLeft:=Dest.Left+outWidth+FSpacing;
TextTop:=(height-TextHeight(Caption))
shr 1;
if Assigned(FGlyph)
and (FNumGlyphs>0)
and (FLayout=blGlyphTop)
then
TextTop:=Dest.Top+outHeight+FSpacing;
if Assigned(FGlyph)
and (FNumGlyphs>0)
and (FLayout=blGlyphBottom)
then
TextTop:=Dest.Top-TextHeight(Caption)-FSpacing;
if FState=-1
then begin
inc(TextTop);
inc(TextLeft);
end;
{Text ausgeben}
if FTransparent
then
Brush.Style:=bsClear
else begin
Brush.Style:=bsSolid;
Brush.Color:=Color;
end;
if FState=-1
then
{ verbleibende Up-Reste löschen }
FillRect(Rect(TextLeft,
TextTop,
TextLeft+TextWidth(Caption),
TextTop+TextHeight(Caption)))
else
{ verbleibende Down-Reste löschen }
FillRect(Rect(TextLeft+1,
TextTop+1,
TextLeft+1+TextWidth(Caption),
TextTop+1+TextHeight(Caption)));
TextR:=Rect(TextLeft,
TextTop,
TextLeft+TextWidth(Caption),
TextTop+TextHeight(Caption));
StrPCopy(outText,Caption);
if not Enabled
then
Font.Color:=clGrayText;
DrawText(
Handle,
outText,
length(Caption),
TextR,
DT_SingleLine);
end;
Entscheidend dürfte das DT_SingleLine sein, was eine einzeilige Ausgabe erzwingt. Das ließe sich wahrscheinlich durch DT_WORDBREAK ersetzen. Dann kann es aber zu Darstellungsproblemen kommen, denn die Kompo orientiert sich ausschließlich an der Breite, nicht aber an der Höhe des Ausgabetextes.
Grüße, Messie