Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TOfficeButton mit transparentem Icon (https://www.delphipraxis.net/145573-tofficebutton-mit-transparentem-icon.html)

Bambuti2000 4. Jan 2010 17:18


TOfficeButton mit transparentem Icon
 
Hi allerseits,

Ich habe ein Outlook 2007 AddIn und habe nach viel Probieren und Nachlesen endlich geschafft die erstellten Buttons mit Bildern/Icons zu versehen.

Jetzt das Problem:

Ich bekomme einfach keine Transparenz hin.
Hat einer von euch evtl. schon mal Office-Leisten programmiert, oder hat jemand Lösungsvorschläge für mich??

Hier mal ein Codeschnippsel...
Delphi-Quellcode:

  // create the command bar for Outlook
  FOutlookBar := CoOutlookApplication.Create;
  FCommandBar := GetCommandBar(FOutlookBar.ActiveExplorer.CommandBars, 'fit4pc - Leiste', True);

...

    // create the command bar button
    BtnBmp:=TBitmap.Create;
    try
      BtnBmp.LoadFromResourceName(hInstance, 'fit4pcICON');
      BtnPic:=TPicture.Create;
      try
        BtnPic.Assign(BtnBmp);
        try
          getOLEPicture(BtnPic, BtnPicDisp);
        except
          ShowMessage('Fehler: getOLEPicture (HTML)'); //nur während der Testphase Fehler ausgeben
        end;
      except
        ShowMessage('Fehler: Assign BMP to Picture (HTML)'); //nur während der Testphase Fehler ausgeben
      end;
      BtnPic.Free;
    except
      ShowMessage('Fehler: Load BMP From Resource (HTML)'); //nur während der Testphase Fehler ausgeben
    end;
    BtnBmp.Free;

    FURLButton := GetOfficeButton(FCommandBar, 'fit4pcURLBtn', True, URLButtonClick, 'www.fit4pc.de', 'Besuchen Sie uns im Internet');
    FURLButton.Style:=msoButtonIconAndCaption;
    FURLButton.Icon:=BtnPicDisp;
Ist vielleicht nicht einwandfrei programmiert, aber ist im Moment ja noch in der Test/Entwicklungsphase.

Dank im Voraus
lg Bambuti2000

s.h.a.r.k 4. Jan 2010 17:54

Re: TOfficeButton mit transparentem Icon
 
Lädst du eine PNG-Datei? Kannst du einen Screenshot anhängen, wie denn das Icon im Moment in Outlook aussieht?

Bambuti2000 5. Jan 2010 09:10

Re: TOfficeButton mit transparentem Icon
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Armin,

Ich habe es bis jetzt nur mit BMP und ICO geschafft überhaupt etwas anzuzeigen. Leider werden ICO nur als schwarzes Kästchen angezeigt (siehe ScreenShot). PNG und GIF bekomme ich gar nicht erst rein (deshalb die ganzen Exeption-Anweisungen). Hab mit PNG und GIF aber auch noch nicht all zu viel Zeit verbracht. Ich denke nur dass "Microweich" doch eigentlich auch nur Icon's aus DLL's in die Leisten lädt.
Im Anhang hab ich mal ein ScreenShot wie es bis jetzt aussieht, das BMP sollte bei dem Versuch eine Transparenz am oberen und unteren Rand darstellen, klappt aber auch nicht.

Gruß Stefan

PS: Übrigens wird das ICO nur schwarz beim "Assign" ins TPicture. Beim direkten Laden (...LoadFromFile...) bekomme ich gar nichts angezeigt.

s.h.a.r.k 5. Jan 2010 11:03

Re: TOfficeButton mit transparentem Icon
 
Ich wollte gerade mal deinen Code probieren, nur hab ich auf die Schnelle keine Ahnung woher ich die Outlook_TLB oder welche Unit ich einbinden muss um die Methode getOLEPicture ausführen zu können. Probier doch mal das folgende:

Delphi-Quellcode:
var
  img : TImage; // <- Hat seit Delphi 2007 oder 2009 (?) PNG-Unterstützung
begin
  img := TImage.Create(nil);
  try
    img.Picture.Bitmap.LoadFromResourceName(hInstance, 'fit4pcICON');
    try
      getOLEPicture(img.Picture, BtnPicDisp); // <- Ich habe hier keine Ahnung, was getOLEPicture erwartet, da meine Hilfe dazu nichts findet (D2010)
    except
      ShowMessage('Fehler: getOLEPicture (HTML)'); //nur während der Testphase Fehler ausgeben
    end;
  finally
    FreeAndNil(img);
  end;
Edit: Ich habe gerade gesehen, dass du mit Delphi 7 arbeitest. Da brauchst du die PngComponents, wenn du PNGs verwenden magst:
http://cc.embarcadero.com/Item/26127 (keine Ahnung, ob diese Version mit D7 läuft)
http://www.thany.org/article/18/VCL (diese Version müsste eigentlich mit D7 laufen)

Bambuti2000 5. Jan 2010 14:09

Re: TOfficeButton mit transparentem Icon
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also,
ich hab mal die pngimage-Compo mit Eingebunden. Leider wird aber wie bei einem Icon "NIX" angezeigt. Ich wollte es zwar transparent, aber soooo transparent ist mir nun auch nicht recht. :wink:
Desweiteren hab ich die Outlook_TLB ... ich glaube ... bin mir aber nicht mehr ganz sicher ... selber erstellt.
Geht über "Typbibliothek importieren..." wenn ich mich nicht täusche. Leider ist man dann, so glaube ich zumindest, etwas eingeschränkt was die Office/Outlook -Version(en) angeht, ist aber nur 'ne Vermutung.

Nun ja, leider bin ich immer noch nicht weiter, bin aber schon mal dankbar das sich überhaupt jemand Gedanken dazu macht. Um das ganze noch abzurunden werde ich mal das Projekt Zippen und mit anfügen, für's bessere Verständnis und evtl. zum selber testen..

Gruß Stefan

s.h.a.r.k 5. Jan 2010 16:24

Re: TOfficeButton mit transparentem Icon
 
Was machst das Ding denn im Allgemeinen überhaupt? Vielleicht teste ich es schnell, wenn es nicht zu viel unfug macht. Bin aber kein Outlook-Nutzer und von dem her habe ich da kein Mail-Konto angelegt. Ebenso habe ich Office 2007 installiert. Macht das was? Muss ich für das Testen Outlook immer neu starten?

Edit: Hab das Ding leider nicht zum Laufen bekommen. Es hagelte einen Fehler nach dem anderen. Seltsam ist auch, dass die Outlook_TLB sich selbst in der uses einbindet, oder ich habe irgendwelche Dateien nicht.

Andere Idee: Hast du schon mal versuchtein Icon aus der Windows-Icon-DLL (mir fällt gerade deren Name nicht ein :wall: ) zu laden?

Bambuti2000 6. Jan 2010 10:31

Re: TOfficeButton mit transparentem Icon
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, moin,

das AddIn erstellt eigentlich nur eine neue Outlook Symbolleiste mit zwei Schaltern. Einer ruft eine Internetseite auf und der andere erstellt eine neue Mail mit angegebenem Empfänger. Zusätzlich wird ein Kontakteintrag erstellt (That's it).
Da das Projekt einige Zeit (ca. 1/2 Jahr) geruht hatte, weil ich keine Zeit hatte, weiß ich leider auch nicht mehr genau wie ich das mit TLB... hinbekommen hab. Ich weiß nur noch dass es 'ne ziemliche Fummelei war.
Da ich auch Office 2007 nutze hab ich natürlich auch nur unter dieser Version getestet.
Und normalerweise sollte es nicht nötig sein nach Änderungen das AddIn jedesmal neu einzurichten, vorausgesetzt es beinhaltet keine gravierenden Fehler. Wichtig ist nur die Reg-Keys vor dem ersten mal zu setzten (vorher den Pfad in der Reg-Datei anpassen).
Für den Fall dass du es mal Testen möchtest, aber nicht kompiliert bekommst, hänge ich mal die fertige DLL an.


Icons aus der OUTLLIBR.DLL (Outlook Icon Library) habe ich noch nicht versucht, werd ich aber direkt mal testen.

Gruß
Stefan


Hab da noch folgendes gefunden... Link
Leider nur in VB, aber vielleicht hilft das ein wenig weiter ...werde mich mal weiter im Netz umsehen und probieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz