Ich habe jetzt mal ein Beispiel. Wenn mit der Bildschirmtastatur eine Zahl eingefügt werden, wandert der Text.
Gebe ich es über der Tastatur ein, dann überschreibt er.
Ich möchte aber gerne, das auch die Bildschirmtastatur den Text überschreibt.
Code: Alles auswählen
; English forum: http://www.purebasic.fr/english/viewtopic.php?t=7030&highlight=
; Author: Kale (updated for PB3.92 by Andre, updated for PB4.00 by blbltheworm)
; Date: 29. July 2003
; OS: Windows
; Demo: No
;-Init Constants
#WindowIndex =0
#GadgetIndex =0
#ImageIndex =0
#StatusBarIndex =0
#MenuBarIndex =0
;-Window Constants
Enumeration
#WINDOW_MAIN
EndEnumeration
;-Gadget Constants
;Window_Main
Enumeration
#MenuBar_Main
#MenuBar_Main_New
#MenuBar_Main_Open
#MenuBar_Main_Save
#MenuBar_Main_Exit
#MenuBar_Main_Settings
#MenuBar_Main_Help
#MenuBar_Main_About
#MenuBar_1
#MENU_NEW
#MENU_OPEN
#MENU_SAVE
#MENU_SAVEAS
#MENU_UNDO
#MENU_REDO
#MENU_CUT
#MENU_COPY
#MENU_PASTE
EndEnumeration
Enumeration
#Gadget_Main_Editor
#T_1
#T_2
#T_3
EndEnumeration
Enumeration
#StatusBar_Main
#StatusBar_Main_Field1
#StatusBar_Main_Field2
EndEnumeration
Procedure NoTabJump(pGadgetID)
;Needed, because i don't want a jump with tab
Style = GetWindowLong_(pGadgetID, #GWL_STYLE)
newStyle = Style & (~#WS_TABSTOP)
SetWindowLong_(pGadgetID, #GWL_STYLE, newStyle)
ProcedureReturn pGadgetID
EndProcedure
Procedure.l Window_Main()
If OpenWindow(#WINDOW_MAIN,175,0,400,350,"Editor Test",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered|#PB_Window_Invisible)
CreateMenu(#MenuBar_Main,WindowID(#WINDOW_MAIN))
MenuTitle("Datei")
MenuItem(#MenuBar_Main_New,"Neu")
MenuBar()
MenuItem(#MenuBar_Main_Open,"Öffnen")
MenuItem(#MenuBar_Main_Save,"Speichern")
MenuBar()
MenuItem(#MenuBar_Main_Exit,"Ende")
MenuTitle("Bearbeiten")
MenuItem(#MenuBar_Main_Settings,"Einstellungen")
MenuTitle("Hilfe")
MenuItem(#MenuBar_Main_Help,"Hilfe")
MenuBar()
MenuItem(#MenuBar_Main_About,"Über")
If CreateToolBar(10, WindowID(#WINDOW_MAIN))
ToolBarStandardButton(#MENU_NEW, #PB_ToolBarIcon_New)
ToolBarToolTip(10,#MENU_NEW, "Neu")
ToolBarStandardButton(#MENU_OPEN, #PB_ToolBarIcon_Open)
ToolBarToolTip(10,#MENU_OPEN, "Öffnen")
ToolBarStandardButton(#MENU_SAVE, #PB_ToolBarIcon_Save)
ToolBarToolTip(10,#MENU_SAVE, "Speichern")
ToolBarSeparator()
ToolBarStandardButton(#MENU_UNDO, #PB_ToolBarIcon_Undo)
ToolBarToolTip(10,#MENU_UNDO, "Rückgängig")
ToolBarStandardButton(#MENU_REDO, #PB_ToolBarIcon_Redo)
ToolBarToolTip(10,#MENU_REDO, "Wiederholen")
ToolBarSeparator()
ToolBarStandardButton(#MENU_CUT, #PB_ToolBarIcon_Cut)
ToolBarToolTip(10,#MENU_CUT, "Ausschneiden")
ToolBarStandardButton(#MENU_COPY, #PB_ToolBarIcon_Copy)
ToolBarToolTip(10,#MENU_COPY, "Kopieren")
ToolBarStandardButton(#MENU_PASTE, #PB_ToolBarIcon_Paste)
ToolBarToolTip(10,#MENU_PASTE, "Einfügen")
EndIf
ButtonGadget(#T_1,10,260,20,20,"1")
ButtonGadget(#T_2,30,260,20,20,"2")
ButtonGadget(#T_3,50,260,20,20,"3")
EditorGadget(#Gadget_Main_Editor,0,25,400,233)
CreateStatusBar(#StatusBar_Main,WindowID(#WINDOW_MAIN))
AddStatusBarField(100)
AddStatusBarField(100)
HideWindow(#WINDOW_MAIN,0)
ProcedureReturn WindowID(#WINDOW_MAIN)
EndIf
EndProcedure
Procedure Tastendruck(taste)
keybd_event_(taste, #Null, #Null, #Null)
keybd_event_(taste, #Null, #KEYEVENTF_KEYUP, #Null)
EndProcedure
;-Main Loop
If Window_Main()
RemoveKeyboardShortcut(#WINDOW_MAIN, #PB_Shortcut_All)
text.s="Der Tag ist schön. Das Haus ist groß (vielleicht auch nicht), der Garten ist klein."+#CRLF$+"Auch die Bäume sind groß; Der Himmel ist blau."
SetGadgetText(#Gadget_Main_Editor,text)
SetActiveGadget(#Gadget_Main_Editor)
Tastendruck(#VK_INSERT)
quitMain=0
Repeat
EventID=WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
If EventWindow()=#WINDOW_MAIN
quitMain=1
EndIf
Case #PB_Event_Menu
Select EventMenu()
Case #MenuBar_Main_New
Case #MenuBar_Main_Open
Case #MenuBar_Main_Save
Case #MenuBar_Main_Exit
quitMain = 1
Case #MenuBar_Main_Settings
Case #MenuBar_Main_Help
Case #MenuBar_Main_About
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget_Main_Editor
Case #T_1
SendMessage_(GadgetID(#Gadget_Main_Editor), #EM_REPLACESEL, 1, @"1")
Case #T_2
SendMessage_(GadgetID(#Gadget_Main_Editor), #EM_REPLACESEL, 1, @"2")
Case #T_3
SendMessage_(GadgetID(#Gadget_Main_Editor), #EM_REPLACESEL, 1, @"3"); Text wird eingesetzt
EndSelect
EndSelect
Until quitMain
CloseWindow(#WINDOW_MAIN)
EndIf
End
; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
; EnableXP
; DisableDebugger
und das ist die Lösung:
Code: Alles auswählen
Case #T_3
SendMessage_(GadgetID(Gadget),#EM_EXGETSEL,0,Range.CHARRANGE)
SendMessage_(GadgetID(#Gadget_Main_Editor),#EM_SETSEL,Range\cpMax, Range\cpMax+1)
SendMessage_(GadgetID(#Gadget_Main_Editor),#WM_CUT,0,0)
SendMessage_(GadgetID(#Gadget_Main_Editor), #EM_REPLACESEL, 1, @"3"); Text wird eingesetzt