GadgetId() inerhalb einer Procedure ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
silbersurfer
Beiträge: 175
Registriert: 06.07.2014 12:21

GadgetId() inerhalb einer Procedure ?

Beitrag 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	
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: GadgetId() inerhalb einer Procedure ?

Beitrag 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    
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: GadgetId() inerhalb einer Procedure ?

Beitrag 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
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
silbersurfer
Beiträge: 175
Registriert: 06.07.2014 12:21

Re: GadgetId() inerhalb einer Procedure ?

Beitrag 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
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: GadgetId() inerhalb einer Procedure ?

Beitrag 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 
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten