Überschreibemodus einstellen für Editorgadget
Überschreibemodus einstellen für Editorgadget
Habe schon tagelang gegoogelt. Möchte gerne den Überschreibemodus für das Editorgadget einstellen.
Auch die API-Funktionen durchgeschaut. Aber nichts gefunden.
Ich hoffe, ihr könnt mir ein Hinweis geben.
Auch die API-Funktionen durchgeschaut. Aber nichts gefunden.
Ich hoffe, ihr könnt mir ein Hinweis geben.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Re: Überschreibemodus einstellen für Editorgadget
Du könnest einfach den Fokus auf dein EditorGadget legen und die Einfg-Taste simulieren.
Eine #EM-Konstante fürs Überschreiben weiß ich spontan leider nicht, aber du kannst ja mal auf folgender Seite unter "Messages" schauen: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Eine #EM-Konstante fürs Überschreiben weiß ich spontan leider nicht, aber du kannst ja mal auf folgender Seite unter "Messages" schauen: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Überschreibemodus einstellen für Editorgadget
Das RTF-Control unterstützt IMHO keinen Überschreibmodus, musst Du also selber simulieren.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Überschreibemodus einstellen für Editorgadget
Hier mal ein Beispielcode, um die Einfg-Taste zu simulieren:
Soweit ich weiß gibt es auch eine API-Funktion, die eine Tastensimulation direkt an einen Control sendet. Ich weiß aber nicht mehr, wie diese heißt.
Code: Alles auswählen
If OpenWindow(0, 0, 0, 500, 250, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(1, 10, 10, 480, 230, 0)
SetActiveGadget(1)
keybd_event_(#VK_INSERT, #Null, #Null, #Null)
keybd_event_(#VK_INSERT, #Null, #KEYEVENTF_KEYUP, #Null)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: Überschreibemodus einstellen für Editorgadget (gelöst)
Hallo RSBASIC,
ich dachte, ja das ist es. Aber anscheint hat TS-Soft recht.
Mal überschreibt er, dann fügt er ein. Undefinierbar.
Edit: Funktioniert doch.
ich dachte, ja das ist es. Aber anscheint hat TS-Soft recht.
Mal überschreibt er, dann fügt er ein. Undefinierbar.
Edit: Funktioniert doch.
Zuletzt geändert von dysti am 24.01.2013 15:43, insgesamt 1-mal geändert.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Re: Überschreibemodus einstellen für Editorgadget
Hallo RSBASIC,
wie würde der Befehl aussehen, wenn man z. B. STRG + C simulieren wollte?
wie würde der Befehl aussehen, wenn man z. B. STRG + C simulieren wollte?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Re: Überschreibemodus einstellen für Editorgadget
Code: Alles auswählen
EnableExplicit
Define EventID
Define Quit
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EditorGadget(1,10,10,480,200,0)
ButtonGadget(2,390,220,100,20,"Kopieren",0)
SetActiveGadget(1)
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
Select EventGadget()
Case 2
SetActiveGadget(1)
keybd_event_(#VK_LCONTROL, #Null, #Null, #Null)
keybd_event_(#VK_C, #Null, #Null, #Null)
keybd_event_(#VK_LCONTROL, #Null, #KEYEVENTF_KEYUP, #Null)
keybd_event_(#VK_C, #Null, #KEYEVENTF_KEYUP, #Null)
EndSelect
EndIf
If EventID=#PB_Event_CloseWindow
Quit=1
EndIf
Until Quit=1
EndIf
Re: Überschreibemodus einstellen für Editorgadget
Kann ich für XP (32-bitze) so nicht bestätigents-soft hat geschrieben:Das RTF-Control unterstützt IMHO keinen Überschreibmodus, musst Du also selber simulieren.
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Überschreibemodus einstellen für Editorgadget
Dann zeig doch mal die erforderliche Message, weder MSDN noch das ganze Internet liefern hierzubobobo hat geschrieben:Kann ich für XP (32-bitze) so nicht bestätigen
andere Ergebnisse. Das mit den keyevents ist ja nur eine Simulation, die nichts mit dem RTF zu tun hat.
Wüßte auch nicht, was das jetzt mit XP zu tun haben sollte.
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Überschreibemodus einstellen für Editorgadget
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.
und das ist die Lösung:
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
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9