Hilfe mit ImageGadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Hilfe mit ImageGadget

Beitrag von marcelx »

Hallo zusammen,

ich möchte mit ein einfache PB mit ImageGadget testen.
Ohne ImageGadget ist die Funktion OK.
Mit ImageGadget reagieren die Button nicht.

Ich verstehe nicht warum:

Code: Alles auswählen

Enumeration
#Window_0
#txt1
#txt2
#txt3
#buttonEnd
#buttonNew
#web
#frame
#img
EndEnumeration

Define.l Event, EventWindow, EventGadget, EventMenu

Global width.i = 960
Global height.i = 768

Global W_dscrx.i = 80
Global W_dscry.i = 20
Global W_dscrw.i = 700
Global W_dscrh.i = 570
W_dscrx = (width - W_dscrw)/2
    
#pathTxt = "text\fr\"
UseJPEGImageDecoder()

imgBack = CatchImage (1,?imgBack)


If OpenWindow(#Window_0, 0, 0, width, height, "Titel", #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
  hWnd = GetActiveWindow()
  ;-      ImageGadget(#img, 0,0,width,height-300,imgBack)

  TextGadget(#txt1, 0, height-120, width, 120, "");
  SetGadgetColor(#txt1, #PB_Gadget_BackColor, RGB($99, $CC, $CD))
  
  TextGadget(#txt2, 0, height-30, width, 25, "text ... ", #PB_Text_Center)

  SetGadgetColor(#txt2, #PB_Gadget_BackColor, RGB($99, $CC, $CD))
  SetGadgetColor(#txt2, #PB_Gadget_FrontColor, RGB($33, $66, $CC))
  
  ButtonGadget(#buttonEnd,      width -100, height-100, 70, 30, "end")
  
  WebGadget(#web, W_dscrx, W_dscry, W_dscrw, W_dscrh, "")
  Global dscr.s=PeekS(?dscr, ?W_1_end-?dscr)
  SetGadgetItemText (#web, #PB_Web_HtmlCode, dscr.s)
  Frame3DGadget(#frame, W_dscrx-1, W_dscry-1, W_dscrw+2, W_dscrh+2, "xxxxxxx", #PB_Frame3D_Flat)
     
  ButtonGadget(#buttonNew,      width/2 + 50, height-100, 70, 30, "new")
EndIf

isTxt3=#False
stateTxt3 = 0;
Repeat
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      
      If EventGadget = #buttonEnd
        CloseWindow(#Window_0)
        Break
      ElseIf EventGadget = #buttonNew
        If isTxt3 = #False
          TextGadget(#txt3, 10, height-200, 50, 25, "text3 ... ")
          Debug("TextGadget")
          ;HideGadget(#txt3,stateTxt3)
          isTxt3 = #True
        Else
          If stateTxt3 = 1
            stateTxt3 = 0
          Else
            stateTxt3 = 1
          EndIf
          HideGadget(#txt3,stateTxt3)
        EndIf
      

      EndIf
      
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver

DataSection
  imgBack: IncludeBinary "imgBack.jpg"
  dscr: IncludeBinary #pathTxt + "W_1_dscr.html" : W_1_end:
EndDataSection 
Danke für ein (oder mehrere Tips)

Gruß
Marcel
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Hilfe mit ImageGadget

Beitrag von STARGÅTE »

marcelx hat geschrieben:ich möchte mit ein einfache PB mit ImageGadget testen.
Was möchtest du ?
marcelx hat geschrieben:Ohne ImageGadget ist die Funktion OK.
Welche Funktion ?
marcelx hat geschrieben:Mit ImageGadget reagieren die Button nicht.
Dein ImageGadget bedeckt das ganze Window, und darauf liegen dann die Buttons.
Die GUI von PB unterstützt jedoch keine übereinanderliegenden Gadgets!

Ich verstehe sowieso nicht, warum du deine Frage noch einmal stellst.
Hier hast du den selbern Code gepostet wie vor 2 Wochen:
Hintergrungbild mit CatchImage - WebGadget mit Frame
Meiner Meinung nach hast du dort schon eine Antwort bekommen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Christian+
Beiträge: 213
Registriert: 13.07.2008 10:05
Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660

Re: Hilfe mit ImageGadget

Beitrag von Christian+ »

Also ich kapier auch nicht ganz was du willst und Gadgets über Gadgets ist so eine Sache aber wenn es dir hier nur darum geht dass das Bild die anderen Gadgets nicht mehr anklickbar macht nimm ein DisableGadget(#img,1) und setzte es hinter dein ImageGadget(#img, 0,0,width,height-300,imgBack) dann dürften die anderen Gadgets wieder gehen da das ImageGadget nicht mehr aktiv ist und deine ganzen Events durcheinander bringt.
mfg Christian+
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Hilfe mit ImageGadget

Beitrag von marcelx »

Ja es stimmt, ich sollte zu erste was dazu sagen, was ich will.
Erste mal, kann ich momentan nicht so viel Zeit für mein Vorhaben aufwenden - es geht also langsam.

Also, was will ich:

Ich wollte ein Fenster erzeugen mit ein obere Bereich mit ein Hintergrundsbild.
Unten wollte ich ein farbige Bereich, wo meine Button erscheinen sollten.
Beim klicken auf ein der Button, werden im obere Bereich Text ausgegeben TextGadget, EditorGadget für Texteingaben und z.B. ComboBoxGadget.
Dabei werden neue Button angezeigt oder ausgeblende und genau so im obere Bereich werden mein Text ein- ausgeschaltet.

Übrigens, bin ich auf die Idee gekommen, dass mein Bild so groß ist, dass das klicken auf meine Button nicht funktioniert.

Wie könnte ich so was realisieren.

Danke und Gruß
Marcel
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Hilfe mit ImageGadget

Beitrag von STARGÅTE »

Wie könnte ich so was realisieren.
Die Antwort hast du bereits in deinem alten Thema bekommen: Antwort von mk-soft
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Hilfe mit ImageGadget

Beitrag von mk-soft »

Du must für die Bereich Container anlegen...

Hier noch mal wie das mit den Hintergrundbild funktioniert!!!
http://www.purebasic.fr/german/viewtopi ... =8&t=22850

...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Hilfe mit ImageGadget

Beitrag von bobobo »

die Imädsche dissebeln hilft auch meistenteils .. dann kann man auch owerläppt gädjetten

(ich frag mich grad was ich eben getrunken hab ?)

zur Veranschaulichung

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
  #Image_0
  #Button_0
EndEnumeration
;- Image Globals
Global Image0
;- Catch Images
Image0 = CreateImage(0,400,400)
StartDrawing(ImageOutput(0))
  Box(0,0,400,400,RGB(255,222,192))
  DrawText(0,100,"Das Image ist nach dem Start Disabled")
  DrawText(0,120,"und der Knopf wuppt wie er soll")
StopDrawing()
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If UseGadgetList(WindowID(#Window_0))
      ImageGadget(#Image_0, 40, 50, 1280, 960, Image0)
      ButtonGadget(#Button_0, 30, 20, 180, 100, "WATT FÜRN BATTN")
      DisableGadget(#Image_0,1)
    EndIf
  EndIf
EndProcedure
Open_Window_0()
Repeat ; Start of the event loop
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  GadgetID = EventGadget() ; Is it a gadget event?
  EventType = EventType() ; The event type
  If Event = #PB_Event_Gadget
    If GadgetID = #Image_0
    ElseIf GadgetID = #Button_0
      DisableGadget(#Image_0,0)
      StartDrawing(ImageOutput(0))
        Box(0,0,400,400,RGB(192,222,255))
        DrawText(0,100,"Das Image ist nun nicht mehr Disabled")
        DrawText(0,120,"und der Knopf wuppt gar nicht mehr wie er soll")
        DrawText(0,120,"der Knopf geht nun vermutlich nur noch da, wo kein Imagegadget dahinter liegt.")
      StopDrawing()
      SetGadgetState(#Image_0,ImageID(0))
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten