// Wenn man bei
einem Speedbutton die Eigenschaft Caption belegt, wird
// der Text neben dem Bild angezeigt. Will man aber den Text quer über
das
// Bild schreiben, kann man den nachfolgenden Code benutzen. Da ein
Glyph aus
// mehreren Bildern bestehen kann (z.B. für: Up, Not Enabled, Down),
kann
// mit welches das Ziel festgelegt werden.
Ist der Text breiter als das
// Zielbild, wird eine Fehlermeldung ausgegeben, was man aber mit
// ignore abschalten kann.
// Getestet mit D4 unter Win98
procedure
textaufbild(sb:TSpeedButton;x,y,welches:integer;txt:string;
f:TColor;ignore:boolean);
var bm:tbitmap;
breite:integer;
begin
if (welches > sb.NumGlyphs) or (welches < 1)
then welches:=1;
bm:=Tbitmap.create;
bm.assign(sb.glyph);
bm.pixelformat:=pf24bit;
breite:=bm.width div sb.NumGlyphs;
if ((bm.canvas.textwidth(txt) + x) <= breite)
or ignore then begin
x:=(welches - 1) * breite + x;
bm.canvas.brush.style:=bsclear;
bm.canvas.Font.color:=f;
bm.canvas.textout(x,y,txt);
sb.glyph:=bm;
bm.free;
end else
showmessage('Text zu breit');
end;
//
Beispiel-Aufrufe
procedure
TForm1.Button4Click(Sender: TObject);
begin
textaufbild(speedbutton2,1,3,4,'Test',clyellow,true);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
speedbutton1.enabled:=false;
textaufbild(speedbutton1,6,3,2,'X',clbtnhighlight,false);
textaufbild(speedbutton1,4,3,2,'X',clbtnshadow,false);
end;
|