Hallo,
ich bastel seit einiger Zeit an einem Excel-Addin.
Funktioniert eigntlich als ganz gut. Bis auf die Kleinigkeit,
dass ich es noch geschafft habe die CommandBarButtons
transparent darzustellen (siehe Bild).
Weiss jemand wie das geht?
Hier der Source mit dem die Buttons erzeugt werden.
Delphi-Quellcode:
function TExcelAddin.CreateCommandBarButton(const aCommandBar: CommandBar;
const CommandBarButtonCaption,
CommandBarButtonToolTip,
CommandBarButtonTag: String;
CommandBarSytle: TOleEnum;
ImageIndex : Integer): CommandBarButton;
var
iCnt : Integer;
ControlsCount : Integer;
ControlTag : String;
CBarControl : CommandBarControl;
ButtonFace : TBitmap;
begin
Result:=Nil;
CBarControl:=Nil;
ControlsCount:=aCommandBar.Controls.Count;
// Gibt es schon einen Button mit dem gleichen Tag?
For iCnt:=1 to ControlsCount do
begin
ControlTag:=aCommandBar.Controls.Item[iCnt].Tag;
If AnsiUpperCase(ControlTag)= AnsiUpperCase(CommandBarButtonTag) then
begin
CBarControl:=aCommandBar.Controls.Item[iCnt];
Result:=CBarControl as CommandBarButton;
Exit;
end;
end; // For iCnt:=1 to ControlsCount do
CBarControl:=aCommandBar.Controls.Add(msoControlButton,EmptyParam,EmptyParam,EmptyParam,False);
Result:=CBarControl as CommandBarButton;
Result.Set_Style(CommandBarSytle); // = msoButtonIcon
Result.Set_Caption(CommandBarButtonCaption);
Result.Set_TooltipText(CommandBarButtonToolTip);
Result.Set_Tag(CommandBarButtonTag);
Result.Set_FaceId(0);
{Da das Addin auch unter Excel2000 laufen soll muss das Bild
über die Zwischenablage auf/in den Button kopiert werden.
ExcelXP hat dafür eine Picture-Eigenschaft}
ButtonFace:=TBitmap.Create;
Try
DM.ImageList.GetBitmap(ImageIndex,ButtonFace);
clipboard.Assign(ButtonFace) ;
Result.PasteFace;
Finally
ButtonFace.Free;
end;
end;