Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#1

Excel-Addin und Tranzparenz bei CommandBarButtons

  Alt 30. Sep 2005, 08:23
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;
Miniaturansicht angehängter Grafiken
transparenz_363.jpg  
I come from outer space to save the human race
  Mit Zitat antworten Zitat