Erweiterung für CustomButtons.pb von GPI

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Erweiterung für CustomButtons.pb von GPI

Beitrag von nicolaus »

Da ich das prob hatte images die in einer .bin liegen mit der CustomButtons.pb von GPI zu nutzen habe ich diese um 2 funktionen erweitert.
Dies mußte ich tun da man original bei der funktion LoadCustomButtonImage() nur Dateinamen mit pfad übergeben konnte jedoch nicht mit Adressen zu einem Speicher in dem das bild liegt.
Da ich in meinem fall mit der VBin-LIB arbeite habe ich jetzt die funktionen erst mal so erweitert das man aus einer *.bin die bilder in den speicher läd und durch übergeben der adresse zum speicher sowie der name der Datei (also wie sonst auch im original z.b. "image_*.bmp") kann man wie gewohnt mit der CustomButtons.pb arbeiten.
Ich habe das aus diesem grund für die VBin-lib unmgebaut da ich selbst nich 100 bilder in nem ordner liegen haben will und diese so immer in eine bin packe und im programm die benötigten Dateien dann aus der bin lade.
Vieleicht werd ich ja auch die fumnktionen soweit umbauen das es mit Includierten Bildern in der exe auch funktioniert.

So hier die beiden funktionen die ihr einfach in der CustomButtons.pb unter die jeweigen orginalfunktionen einfügt und das ganze speichert.

Code: Alles auswählen

Procedure AddVBinImageList(*Mem.l,*ImageList.LONG,*Width.LONG,*Height.LONG)
  Result=-1
  Nb=CatchImage(#PB_Any,*Mem)
  If Nb
    IMG=UseImage(Nb)
    If *Width And *Height
      GetObject_(IMG,SizeOf(BITMAP),bmp.BITMAP)
      *ImageList\l=ImageList_Create_(bmp\bmWidth,bmp\bmHeight,#ILC_COLORDDB|#ILC_MASK,10,0)
      *Width\l=bmp\bmWidth
      *Height\l=bmp\bmHeight
    EndIf
    If *ImageList\l
      Result=ImageList_AddMasked_(*ImageList\l,IMG,0)
    EndIf
    FreeImage(Nb)
  EndIf
  ProcedureReturn Result
EndProcedure
für "BinName.s" müßt ihr den Pfad zur .bin-datei übergeben
für "filename.s" müßt ihr den Namen des bildes übergeben (so wie auch in den original funktionen von GPI z.b. "image_*.bmp")
für "Password" müßt ihr das eventuell gesetzte passwort der .bin-datei übergeben

Code: Alles auswählen

Procedure LoadCustomButtonVBinImage(BinName.s,filename.s,Password.s,*Style.CustomButtonStyle,NormalTextColor,HoverTextColor,DisableTextColor,TextBorder)
  Result=#False
  ImageList.l:Widht.l:Heigh.l
  *Style\Img_Normal           =AddVBinImageList(VBin(BinName,ReplaceString(filename,"*","Normal"),Password),@ImageList,@width,@height)
  *Style\Img_NormalHover      =AddVBinImageList(VBin(BinName,ReplaceString(filename,"*","NormalHover"),Password),@ImageList,0,0)
  *Style\Img_Focus            =AddVBinImageList(VBin(BinName,ReplaceString(filename,"*","Focus"),Password),@ImageList,0,0)
  *Style\Img_FocusHover       =AddVBinImageList(VBin(BinName,ReplaceString(filename,"*","FocusHover"),Password),@ImageList,0,0)
  *Style\Img_Pressed          =AddVBinImageList(VBin(BinName,ReplaceString(filename,"*","Pressed"),Password),@ImageList,0,0)
  *Style\Img_PressedHover     =AddVBinImageList(VBin(BinName,ReplaceString(filename,"*","PressedHover"),Password),@ImageList,0,0)
  *Style\Img_PressedFocus     =AddVBinImageList(VBin(BinName,ReplaceString(filename,"*","PressedFocus"),Password),@ImageList,0,0);PressedFocus
  *Style\Img_PressedFocusHover=AddVBinImageList(VBin(BinName,ReplaceString(filename,"*","PressedFocusHover"),Password),@ImageList,0,0);PressedFocusHover
  *Style\Img_Disabled         =AddVBinImageList(VBin(BinName,ReplaceString(filename,"*","Disabled"),Password),@ImageList,0,0)
  *Style\Img_DisabledPressed  =AddVBinImageList(VBin(BinName,ReplaceString(filename,"*","DisabledPressed"),Password),@ImageList,0,0)
  *Style\bmWidth=width
  *Style\bmHeight=height
  *Style\ImageList=ImageList
  *Style\TextBorder=TextBorder
  *Style\TextColor_Normal=NormalTextColor
  *Style\TextColor_NormalHover=HoverTextColor
  *Style\TextColor_Focus=NormalTextColor
  *Style\TextColor_FocusHover=HoverTextColor
  *Style\TextColor_Pressed=NormalTextColor
  *Style\TextColor_PressedHover=HoverTextColor
  *Style\TextColor_PressedFocus=NormalTextColor
  *Style\TextColor_PressedFocusHover=HoverTextColor
  *Style\TextColor_Disabled=DisableTextColor
  *Style\TextColor_DisabledPressed=DisableTextColor
EndProcedure
wenn jemand fehler findet sagt bescheid dann schau ich noch mal.

Gruß Nico