Seite 1 von 2
Re: Rechtsklick bei Editorgadget
Verfasst: 22.12.2010 20:37
von ts-soft
Code: Alles auswählen
; EditorGadget TEST
;{
Enumeration
#Window_0
EndEnumeration
; Variablen
Enumeration
#String_0
#String_1
#Text_0
#Text_1
#Text_2
#Text_3
EndEnumeration
;}
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
Protected result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_CONTEXTMENU
If GadgetID(#String_0) = wParam
DisplayPopupMenu(#String_0, WindowID(#Window_0))
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(#Window_0, 220, 0, 470, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
EditorGadget(#String_0, 120, 50, 150, 140)
SendMessage_(GadgetID(#String_0), #EM_SETTARGETDEVICE, #Null, 0)
TextGadget(#Text_0, 120, 30, 240, 20, "Hier geht der rechte Mausklick nicht!")
TextGadget(#Text_2, 120, 10, 140, 20, "Mein EditorGadget")
StringGadget(#String_1, 120, 230, 240, 20, "Test")
TextGadget(#Text_1, 120, 210, 170, 20, "Mein Stringgadget")
TextGadget(#Text_3, 120, 260, 240, 20, "Hier geht der rechte Mausklick!")
If CreatePopupMenu(#String_0)
MenuItem(1, "einfügen")
EndIf
SetWindowCallback(@WinCallback())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #PB_Event_Menu
Select EventMenu()
Case 1
SendMessage_(GadgetID(#String_0), #WM_PASTE, 0, 0)
EndSelect
EndSelect
ForEver
EndIf
Re: Rechtsklick bei Editorgadget
Verfasst: 22.12.2010 21:02
von HeX0R
Dein Engagement in letzter Zeit in allen Ehren, Thomas,
aber findest du es nicht besser jemandem eine Tür nur zu zeigen, als ihn hindurchzustossen?
Re: Rechtsklick bei Editorgadget
Verfasst: 22.12.2010 21:37
von ts-soft
HeX0R hat geschrieben:Dein Engagement in letzter Zeit in allen Ehren, Thomas,
aber findest du es nicht besser jemandem eine Tür nur zu zeigen, als ihn hindurchzustossen?
Es fehlen ja noch die meisten Infos um ein komplettes Kontextmenü einzubauen, sind nur die Grundlagen.
Und bevor da wieder was mit #WM_RBUTTONDOWN kommt, poste ich es lieber
Ausserdem ist fast Weihnachten
Gruß
Thomas
Re: Rechtsklick bei Editorgadget
Verfasst: 22.12.2010 22:41
von hjbremer
ts-soft hat geschrieben:Und bevor da wieder was mit #WM_RBUTTONDOWN kommt, poste ich es lieber
Was hast du gegen #WM_RBUTTONDOWN ?
Funktioniert doch !
Code: Alles auswählen
Case #WM_RBUTTONDOWN: If GetActiveGadget() = \editgadget: PrefEdit_PopUpDisplay(\window): EndIf
Re: Rechtsklick bei Editorgadget
Verfasst: 22.12.2010 22:50
von ts-soft
Warum sollte ich jeden Rechtsklick abfragen, wenn doch das Kontextmenü genügt

Re: Rechtsklick bei Editorgadget
Verfasst: 23.12.2010 15:25
von Velindos
Hallo,
Debugger sind was für Memmen!
Echte Männer kompilieren direkt auf die Master CD …
also Thomas finde deinen Spruch einfach gut!
Die Lösung ist bei mir angekommen und besten Dank für deine Unterstützung. Habe sie in meine Lösung eingebaut. Das Problem tritt auf wenn ich Überschriften in meine Browser kopiere, die man nicht per Drop ins Editorgadget ziehen kann, jetzt funkt die Sache!
Nun zu den Sprüchen im Forum
Dein Engagement in letzter Zeit in allen Ehren, Thomas,
aber findest du es nicht besser jemandem eine Tür nur zu zeigen, als ihn hindurchzustossen?
Also mir wurde erklärt, mittels Beispielen Fragen zu stellen. Und dies hat sich hier wieder als das Beste erwiesen!
"Fragmente helfen keinen und zeigen meisten nur vom Wissen eines Einäugigen, der König unter den Blinden ist!", solche und ähnliche Gestalten haben wir ja mehr als Genug!
Gruss ... Velindos
Re: Rechtsklick bei Editorgadget
Verfasst: 01.02.2011 15:15
von Velindos
Hallo,
wenn ich auf das Image fahre, funktioniert die rechte Maustaste nicht mehr.
Code: Alles auswählen
; EditorGadget & ImageGadget TEST
;{
Enumeration
#Window_0
EndEnumeration
; Variablen
Enumeration
#String_0
#String_1
#Text_0
#Text_1
#Text_2
#Text_3
#ImageGadget8
EndEnumeration
;}
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
Protected result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_CONTEXTMENU
If GadgetID(#String_0) = wParam
DisplayPopupMenu(#String_0, WindowID(#Window_0))
EndIf
If GadgetID(#ImageGadget8) = wParam
DisplayPopupMenu(#ImageGadget8, WindowID(#Window_0))
EndIf
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(#Window_0, 220, 0, 470, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
EditorGadget(#String_0, 120, 50, 150, 140)
ImageGadget (#ImageGadget8,280,50,70,70,test, #PB_Image_Border )
SendMessage_(GadgetID(#String_0), #EM_SETTARGETDEVICE, #Null, 0)
TextGadget(#Text_0, 120, 30, 240, 20, "Hier geht der rechte Mausklick nicht!")
TextGadget(#Text_2, 120, 10, 140, 20, "Mein EditorGadget")
StringGadget(#String_1, 120, 230, 240, 20, "Test")
TextGadget(#Text_1, 120, 210, 170, 20, "Mein Stringgadget")
TextGadget(#Text_3, 120, 260, 240, 20, "Hier geht der rechte Mausklick!")
If CreatePopupMenu(#String_0)
MenuItem(1, "einfügen")
MenuItem(2, "Bearbeiten")
EndIf
SetWindowCallback(@WinCallback())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #PB_Event_Menu
Select EventMenu()
Case 1
SendMessage_(GadgetID(#String_0), #WM_PASTE, 0, 0)
Case 2
Debug "Eingefügt!"
EndSelect
EndSelect
ForEver
EndIf
Verstehe ich das richtig, die funktioniert nur bei EditorGadget und StringGadget?
Gruss Velindos
Re: Rechtsklick bei Editorgadget
Verfasst: 01.02.2011 15:23
von RSBasic
Du möchtest einen Rechtsklick beim ImageGadget abfragen?
Schau in der PB-Hilfe nach, unter: EventType().
Beispiel:
Code: Alles auswählen
EnableExplicit
Define EventID
CreateImage(1,100,100,32)
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget)
ImageGadget(1,10,10,0,0,ImageID(1),0)
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_RightClick
Debug "Rechte Maustaste wurde gedrückt..."
EndSelect
EndSelect
EndIf
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf
Re: Rechtsklick bei Editorgadget
Verfasst: 01.02.2011 15:28
von Kiffi
bevor es zu Folgefehlern kommt: ich glaube, dass da bei
Dir ein Verständnisfehler vorliegt.
Du erzeugst mit CreatePopupMenu() kein PopupMenü für
ein bestimmtes Gadget (hier: Dein #String_0). PopupMenues
werden immer gadgetunabhängig erzeugt. Wo es dann aufpoppt
entscheidest Du im Code.
Vergib für Deine Menues eindeutige IDs.
Sowas hier: DisplayPopupMenu(#ImageGadget8, ...
ist dann auch entsprechend falsch.
Zum eigentlichen Problem: Mausklick aufs Image kannst Du auf
#PB_EventType_RightClick abfragen. Dafür braucht's IMO keinen Callback.
Grüße ... Kiffi
Re: Rechtsklick bei Editorgadget
Verfasst: 01.02.2011 15:32
von ts-soft
Ich werde Alt, schon wieder zu langsam.
#WM_CONTEXTMENU gibts es nicht für alle Controls, meist für welche, die Text enhalten.
Den Rest haben die anderen schon gesagt, hier Dein EventLoop, wobei Du natürlich ein
anderes Popup anzeigen solltest:
Code: Alles auswählen
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #PB_Event_Menu
Select EventMenu()
Case 1
SendMessage_(GadgetID(#String_0), #WM_PASTE, 0, 0)
Case 2
Debug "Eingefügt!"
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #ImageGadget8
Select EventType()
Case #PB_EventType_RightClick
DisplayPopupMenu(#String_0, WindowID(#Window_0))
Default
Debug EventType()
EndSelect
EndSelect
EndSelect
ForEver