Hallo zusammen,
Nachdem die PB Hilfe und Forumsuche mich nicht weitergebracht hat, hier meine Frage.
Bei diesen IDE templates die man selbst definieren kann, gibt es dort eine Zeichenkombination oder ein Zeichen welches (platziert im Template) die IDE anweist, nach dem Insert des Templates im Code den Cursor an eine definierte Stelle zu platzieren?
Automatische Cursor Positionierung bei IDE templates?
Re: Automatische Cursor Positionierung bei IDE templates?
Nein, leider nicht.
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
- GlassJoe
- Beiträge: 108
- Registriert: 11.06.2017 20:25
- Computerausstattung: 2 x AMD Phenom II x4 945,2x Dell Latitude X300, Dell Latitude D410, Hp Compaq NC4400
Re: Automatische Cursor Positionierung bei IDE templates?
hmm soweit ich das verstanden hab, willst den Cursor an eine bestimmte Stelle in der PB IDE setzen lassen.
Ist zwar nicht wirlich das was brauchst, aber ich würde damit
experimentieren, und mit dem Zeugs
Handlenummer unter Cursor ermitteln.
Mausklicks simulieren
Es geht immer irgendwie, selbst wenn es umständlich wird, einfach alles mögliche probieren, ich hänge zum teil 2 Tage vor Sturheit an einer Kleinigkeit, bevor ich aufgebe.
Schau dich hier um
http://www.rsbasic.de/winapi-library/
Da findest bestimmt was, mit dem es irgendwie geht.
Ist zwar nicht wirlich das was brauchst, aber ich würde damit
Code: Alles auswählen
Procedure GetEditorGadgetCursorX(Gadget)
; returns X-Pos of Cursor
REG = GadgetID(Gadget)
SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE)
ProcedureReturn (Range\cpMax-(SendMessage_(REG,#EM_LINEINDEX,SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin),0))+1)
EndProcedure
Procedure GetEditorGadgetCursorY(Gadget)
; returns Y-Pos of Cursor
REG = GadgetID(Gadget)
SendMessage_(REG,#EM_EXGETSEL,0,Range.CHARRANGE)
ProcedureReturn SendMessage_(REG,#EM_EXLINEFROMCHAR,0,Range\cpMin)+1
EndProcedure
Procedure EditorGadgetCursorTotalPos(Gadget)
; returns relative Position of Cursor
SendMessage_(GadgetID(Gadget),#EM_EXGETSEL,0,Range.CHARRANGE)
ProcedureReturn Range\cpMax
EndProcedure
Procedure SetEditorGadgetPos(Gadget,x,y)
; Set cursor position
REG = GadgetID(Gadget)
CharIdx = SendMessage_(REG,#EM_LINEINDEX,y-1,0)
LLength = SendMessage_(REG,#EM_LINELENGTH,CharIdx,0)
If LLength >= x-1
CharIdx + x-1
EndIf
Range.CHARRANGE
Range\cpMin = CharIdx
Range\cpMax = CharIdx
SendMessage_(REG,#EM_EXSETSEL,0,Range)
EndProcedure
OpenWindow(1,200,200,300,200,"EditorGadget",#PB_Window_SystemMenu)
CreateGadgetList(WindowID(1))
EditorGadget(1,5,5,290,190)
AddGadgetItem(1,-1,"Hallo!")
AddGadgetItem(1,-1,"")
AddGadgetItem(1,-1,"Hier ein paar Proceduren")
AddGadgetItem(1,-1,"zur Steuerung des Cursors")
AddGadgetItem(1,-1,"im EditorGadget.")
SetEditorGadgetPos(1,7,2)
SetActiveGadget(1)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow: End
EndSelect
SetWindowText_(WindowID(1),"X: "+Str(GetEditorGadgetCursorX(1))+" Y: "+Str(GetEditorGadgetCursorY(1))+" -- Position: "+Str(EditorGadgetCursorTotalPos(1)))
ForEver
Handlenummer unter Cursor ermitteln.
Code: Alles auswählen
Structure Point64
StructureUnion
p.point
q.q
EndStructureUnion
EndStructure
Procedure Thread(z)
hndl = 0
cursor.Point64
Repeat
GetCursorPos_(cursor.Point64)
hndl = WindowFromPoint_( cursor\q )
SetGadgetText(1,"Handle-Nummer unter Maus: "+Str(hndl))
Delay(100)
ForEver
EndProcedure
If OpenWindow(0,0,0,250,50,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
StickyWindow(0,1)
TextGadget(1,10,10,220,20,"",0)
CreateThread(@Thread(),0)
Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf
Code: Alles auswählen
Procedure Left_Click()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, xy\x, xy\y, 0, 0)
EndProcedure
Procedure Left_DoubleClick()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, xy\x, xy\y, 0, 0)
EndProcedure
Procedure Right_Click()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_RIGHTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_RIGHTUP, xy\x, xy\y, 0, 0)
EndProcedure
Procedure Right_DoubleClick()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_RIGHTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_RIGHTUP, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_RIGHTDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_RIGHTUP, xy\x, xy\y, 0, 0)
EndProcedure
Procedure Middle_Click()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_MIDDLEDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_MIDDLEUP, xy\x, xy\y, 0, 0)
EndProcedure
Procedure Middle_DoubleClick()
Protected xy.point
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_MIDDLEDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_MIDDLEUP, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_MIDDLEDOWN, xy\x, xy\y, 0, 0)
mouse_event_(#MOUSEEVENTF_MIDDLEUP, xy\x, xy\y, 0, 0)
EndProcedure
x=100 : y=100
SetCursorPos_(x,y) ;erst mal an die Position setzen
Schau dich hier um
http://www.rsbasic.de/winapi-library/
Da findest bestimmt was, mit dem es irgendwie geht.
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶