Seite 1 von 1

GadgetId() inerhalb einer Procedure ?

Verfasst: 28.08.2014 21:04
von silbersurfer
Hallo Leute,
Ich bin es schon wieder, mit noch einen Problem

Mein Modul ist fertig und alles klappt.
Nun wollte Ich noch etwas verfeinern indem Ich das #PB_Any mit einbeziehe.
So das man wie gewohnt auch mit Enumeration Arbeiten kann

Also wollte ich das über ein Parameter einer Procedure übergeben nur dann bekomme Ich immer einen Fehler ???
GadgetID() geht so nicht in einer Procedure, vieleicht hat ja da einer eine Idee ?

Code: Alles auswählen

Procedure imgGadget(Gadget,x,y,b,h,img)
	Protected *this.GadgetImage	=	AllocateMemory(SizeOf(GadgetImage))
	If (Not *this)
		ProcedureReturn #False
	EndIf
	With *this
		If Gadget=#PB_Any	
			\Gadget=ImageGadget(gadget,x,y,b,h,img,#PB_Image_Raised)
		Else
			;\Gadget=GadgetID(Gadget)
			Debug GadgetID(Gadget)
		EndIf 
	EndWith	
EndProcedure	

Re: GadgetId() inerhalb einer Procedure ?

Verfasst: 28.08.2014 21:14
von ts-soft
Ich denke mal, Du meinst es so:

Code: Alles auswählen

Procedure imgGadget(Gadget,x,y,b,h,img)
   Protected *this.GadgetImage   =   AllocateMemory(SizeOf(GadgetImage))
   If (Not *this)
      ProcedureReturn #False
   EndIf
   With *this
      If Gadget=#PB_Any   
         \Gadget=ImageGadget(Gadget,x,y,b,h,img,#PB_Image_Raised)
      Else
        ImageGadget(Gadget,x,y,b,h,img,#PB_Image_Raised)
        \Gadget = Gadget
      EndIf
   EndWith   
EndProcedure    

Re: GadgetId() inerhalb einer Procedure ?

Verfasst: 28.08.2014 21:22
von Danilo
Oder ohne den doppelten Funktionsaufruf:

Code: Alles auswählen

Procedure imgGadget(Gadget, x, y, b, h, img)
    Protected *this.GadgetImage = AllocateMemory( SizeOf(GadgetImage) )
    If Not *this
        ProcedureReturn #False
    EndIf
    With *this
        \Gadget = ImageGadget(Gadget, x, y, b, h, img, #PB_Image_Raised)
        If Gadget <> #PB_Any   
            \Gadget = Gadget
        EndIf
    EndWith   
EndProcedure

Re: GadgetId() inerhalb einer Procedure ?

Verfasst: 28.08.2014 21:27
von silbersurfer
Ja das meinte Ich ts-soft,
Jetzt merke Ich, das Ich eindeutig zu lange Proggen bin, der Fehler hätte mir Echt auffallen müßen :oops:

Danke ts-soft

Edit: Jo das ist auch gut Danilo

Re: GadgetId() inerhalb einer Procedure ?

Verfasst: 28.08.2014 21:44
von ts-soft
Mit Danilos Version kannste auch eine Fehlerbehandlung einbauen, ungefähr so:

Code: Alles auswählen

Procedure imgGadget(Gadget, x, y, b, h, img)
  Protected *this.GadgetImage = AllocateMemory( SizeOf(GadgetImage) )
  If Not *this
    ProcedureReturn #False
  EndIf
  With *this
    \Gadget = ImageGadget(Gadget, x, y, b, h, img, #PB_Image_Raised)
    If \Gadget = 0 ; Error
      Debug "Can't create ImageGadget!"
      ; Procedure mit Fehlermeldung beenden
    ElseIf Gadget <> #PB_Any
      \Gadget = Gadget
    EndIf
  EndWith   
EndProcedure