// 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;


Zugriffe seit 6.9.2001 auf Delphi-Ecke