Seite 1 von 3
Fragen zum Editor Gadget
Verfasst: 21.03.2006 20:08
von Scarabol
Hallo Leute,
ich hab mir nen eigenen Editor geschrieben ähnlich dem von Windows also sehr schlicht und nichts aufregendes. Den Kern bildet der Editorgadget in dem man erfreulicherweise schon die Tastenkürzel wie Strg+Z usw. benutzen kann. Ich frage mich aber nun wie ich denn dem Menüpunkt "Rückgänig" die Funktion dieses Tastenkürzels zuweisen kann. Währe ja sonst Schwachsinn wenn ich nochmal sonne Funktion programmieren würde.
Gruß
Scarabol
PS Wie kann ich den Editor gadget an die Größe des Fensters anpassen nachdem sie durch den Benutzer geändert wurde.
Verfasst: 21.03.2006 20:26
von AND51
Es gibt eine Funktion, die gibt beim drücken von Strg+Z dasselbe menuID() zurück, wie ein "echter" Menüeintrag.
Diese beiden Sachen dürfen / müssen sogar dieselbe MenuID zugewiesen bekommen, um sie später wieder zurückgeben zu können.
Sry, mir fällt grad der Name nicht ein, von der Funktion, die diese Hotkeys erstellt.
Verfasst: 21.03.2006 20:32
von Kiffi
AND51 hat geschrieben:Sry, mir fällt grad der Name nicht ein, von der Funktion, die diese Hotkeys erstellt.
AddKeyboardShortcut()
@Scarabol:
Scarabol hat geschrieben:PS Wie kann ich den Editor gadget an die Größe des
Fensters anpassen nachdem sie durch den Benutzer geändert wurde.
Mit ResizeGadget().
Grüße ... Kiffi
Verfasst: 21.03.2006 20:35
von Scarabol
ich glaub du meinst die addkeyboardshortcut funktion die kenne ich bereits ich will aber genau das gegenteil haben damit das Menu die gleiche ID hat wie der shortcut
Verfasst: 21.03.2006 20:36
von AND51
Fenau den befehl meine ich.
Den machst du und sagt, er soll bei gedrückten tasten die ID 1 zurückgeben.
Dann erstellst du ein Menu und dann ein Menuitem, das auch die ID eins hat.
MenuID() wird dann immer 1 zurückgeben, nach einem WindowEvent(), egal ob die Tasten der der Eintrag ausgewählt wurden; das macht Sinn. Wolltest du das nicht so haben?
Verfasst: 21.03.2006 20:50
von Scarabol
Nicht ganz aber ich geb zu es ist nicht ganz einfach.
Wenn ich deine Idee befolge dann löst egal ob Tasten oder Menu immer ein und dieselbe Aktion aus. Das ist auch soweit ganz gut aber leider nicht für meine Zwecke zu gebrauchen, da ich die Aktion die ausgelöst würde selber programmieren müsste. Das heißt wiederum ich müsste eine eigene "Rückgänig" Funktion programmieren und darauf habe ich ehrlich gesagt keine Lust zumal der Editor Gadget bereits diese Funktion hat ich leider nur nicht weiß wie ich diese über das Menü aktivieren kann.
Verfasst: 21.03.2006 20:55
von ts-soft
Hier mal ein paar entsprechende Proceduren:
Code: Alles auswählen
Procedure Editor_CanUndo(Gadget)
ProcedureReturn SendMessage_(GadgetID(Gadget), #EM_CANUNDO, #Null, #Null)
EndProcedure
Procedure Editor_Undo(Gadget)
ProcedureReturn SendMessage_(GadgetID(Gadget), #EM_UNDO, #Null, #Null)
EndProcedure
Procedure Editor_CanRedo(Gadget)
ProcedureReturn SendMessage_(GadgetID(Gadget), $0454, #Null, #Null)
EndProcedure
Procedure Editor_Redo(Gadget)
ProcedureReturn SendMessage_(GadgetID(Gadget), $0455, #Null, #Null)
EndProcedure
Im CodeArchiv wirste auch fündig

Verfasst: 21.03.2006 20:57
von Scarabol
kann man nicht einfach mit getkeyboardshortcut oder sowas die ID die der Shortcut zurückgibt herausfinden.
Weil wie gesagt keinen Bock nochmal alles zu programmieren.
Verfasst: 21.03.2006 21:00
von ts-soft
Du nimmst obige Prozeduren und rufst diese per Menü und
AddKeyBoardShortcut mit derselben ID auf. Anders wird es wohl nur schwer
gehen.
Verfasst: 21.03.2006 21:03
von edel
Code: Alles auswählen
;///////////////////////////
;/ Enables the explicit mode
EnableExplicit
;///////////////////////////
;/ Declare variables
Define WindowTitle.s = "Test"
Define CX.l = 500
Define CY.l = 500
Define *hWindow.long
Define WindowEvent.l
Define *hmenu.long
Define *editor.long
#editor_undo = 1
#editor_redo = 2
;///////////////////////////
;/ Open window
*hWindow = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,CX,CY,WindowTitle)
*hmenu = CreateMenu(#pb_any,*hWindow\l)
MenuTitle("Bearbeiten")
MenuItem(#editor_undo, "Undo" +Chr(9)+"Ctrl+Z")
MenuItem(#editor_redo, "Redo" +Chr(9)+"Ctrl+Y")
;///////////////////////////
;/ Gadgets
CreateGadgetList(*hWindow\l)
*editor = EditorGadget(#pb_any,0,0,CX,CY-MenuHeight())
AddKeyboardShortcut(*hWindow,#pb_key_z|#PB_Shortcut_Control,#editor_undo)
AddKeyboardShortcut(*hWindow,#pb_key_y|#PB_Shortcut_Control,#editor_redo)
;///////////////////////////
;/ Window eventloop
Repeat
WindowEvent = WaitWindowEvent()
if WindowEvent = #PB_Event_Menu
if EventMenu() = #editor_undo
sendmessage_(*editor\l,#EM_UNDO,0,0)
endif
if EventMenu() = #editor_redo
sendmessage_(*editor\l,#EM_REDO,0,0)
endif
endif
Until WindowEvent = #WM_CLOSE
;///////////////////////////
;/ Exit application
End
edit : zu lahm
