Hallo Leutz...
Problem: Ich habe ein ImageGadget mit einer Grafik. Ist die Maus über diesem Gadget und die linke Maustaste wird gedrückt, soll die Grafik des ImageGadgets geändert werden. Lasse ich die Maus wieder los oder verlasse das ImageGadget mit der Maus, soll die ursprüngliche Grafik wieder dargestellt werden.
Kennt jemand eine Lösung dazu und kann mir enentuell nen Schnipsel dazu schreiben... wäre sehr dankbar !
Thx... Ghosty
Mouseevents im ImageGadget...
- Ghosty1967
- Beiträge: 205
- Registriert: 29.08.2005 13:56
- Computerausstattung: Intel i7, 128GB Ram, Win10 Ultimate, PB6.00 Alpha 3
- Wohnort: Köln
- Falko
- Admin
- Beiträge: 3535
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
Ich habe jetzt zwar keine professionelle Lösung, aber so könnte man
es auch erreichen. Der Nachteil. Beim Klick auf dem rechten Mousebutton
wird das zweite Bild angezeigt und wird erst wieder beim Linksklick
auf das erste Bild umgestellt. Sonst wird beim Linksklick das Bilder
abwechselnd gezeigt.
Die bessere Lösung wäre wohl mit einem CallbackWindow, indem mann
dort alle Windows-Messages für die Buttons auswertet.
PB4-Code:
Grüße Falko
es auch erreichen. Der Nachteil. Beim Klick auf dem rechten Mousebutton
wird das zweite Bild angezeigt und wird erst wieder beim Linksklick
auf das erste Bild umgestellt. Sonst wird beim Linksklick das Bilder
abwechselnd gezeigt.
Die bessere Lösung wäre wohl mit einem CallbackWindow, indem mann
dort alle Windows-Messages für die Buttons auswertet.
PB4-Code:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 245, 105, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
If LoadImage(0, "up.bmp") And LoadImage(1,"Down.bmp")
ImageGadget(0, 10, 10, 100, 83, ImageID(1))
EndIf
Repeat
Event=WaitWindowEvent()
Select Event
Case 13100;
ImageGadget(0, 10, 10, 100, 83, ImageID(0))
Case #WM_LBUTTONUP
ImageGadget(0, 10, 10, 100, 83, ImageID(1))
EndSelect
Until event = #PB_Event_CloseWindow
EndIf
- Ghosty1967
- Beiträge: 205
- Registriert: 29.08.2005 13:56
- Computerausstattung: Intel i7, 128GB Ram, Win10 Ultimate, PB6.00 Alpha 3
- Wohnort: Köln
eine weitere (wie ich finde sehr schöne) Möglichkeit, ist die, die
EasyVENT-Routinen von srod zu verwenden:
Grüße ... Kiffi
EasyVENT-Routinen von srod zu verwenden:
Code: Alles auswählen
Enumeration
#myWindow
#myImageGadget
EndEnumeration
Declare myImageGadget_OnMouseDown(*sender.PB_Sender)
Declare myImageGadget_OnMouseUp (*sender.PB_Sender)
OpenWindow(#myWindow, #PB_Ignore, #PB_Ignore, 200, 200, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(#myWindow))
LoadImage(0, "d:\up.bmp")
LoadImage(1, "d:\down.bmp")
ImageGadget(#myImageGadget, 5, 5, 190, 190, ImageID(1))
SetEventHandler(GadgetID(#myImageGadget), #OnMouseDown, @myImageGadget_OnMouseDown())
SetEventHandler(GadgetID(#myImageGadget), #OnMouseUp, @myImageGadget_OnMouseUp())
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
End
Procedure myImageGadget_OnMouseDown(*sender.PB_Sender)
SetGadgetState(#myImageGadget, ImageID(0))
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure myImageGadget_OnMouseUp(*sender.PB_Sender)
SetGadgetState(#myImageGadget, ImageID(1))
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
a²+b²=mc²
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22