Editorgadget Cursor stelle auslesen

Hier könnt ihr alle Fragen zu SpiderBasic austauschen.
stevie1401
Beiträge: 643
Registriert: 19.10.2014 15:51
Kontaktdaten:

Editorgadget Cursor stelle auslesen

Beitrag von stevie1401 »

Ich möchte gerne in einem Edsitorgadget irgendwo hinklicken und dort dann etwas einfügen (Zum beispiel Smileys oder andere Bilder). Dazu brauche ich allerdings die Info wo sich der Cusor befindet.
Gibt es eine Möglichkeit in Spiderbasic oder Javascript das herauszufinden?
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1
Benutzeravatar
Kiffi
Beiträge: 10567
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Editorgadget Cursor stelle auslesen

Beitrag von Kiffi »

Code: Alles auswählen

; https://stackoverflow.com/questions/11076975/how-To-insert-text-into-the-textarea-at-the-current-cursor-position

EnableExplicit

Enumeration
  #Window
  #Editor
  #Button
EndEnumeration

Procedure InsertTextAtCurrentPosition(Editor, TextToInsert.s)
  
  If IsGadget(Editor) = #False : ProcedureReturn : EndIf
  If GadgetType(Editor) <> #PB_GadgetType_Editor : ProcedureReturn : EndIf
  
  Protected GID = GadgetID(Editor)
  
  ! var cursorPos = $(v_gid.gadget.textbox).prop('selectionStart');
  ! var v = $(v_gid.gadget.textbox).val();
  ! var textBefore = v.substring(0,  cursorPos);
  ! var textAfter  = v.substring(cursorPos, v.length);
  ! 
  ! $(v_gid.gadget.textbox).val(textBefore + v_texttoinsert + textAfter);
  ! $(v_gid.gadget.textbox).prop({ 'selectionStart': cursorPos + v_texttoinsert.length, 'selectionEnd': cursorPos + v_texttoinsert.length });
  
  SetActiveGadget(Editor)
  
EndProcedure

Procedure ButtonGadgetEvent()
  
  InsertTextAtCurrentPosition(#Editor, " Hello! ")
  
EndProcedure

OpenWindow(#Window, 0, 0, 400, 220, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(#Editor, 10, 10, 380, 150)
SetGadgetText(#Editor, "This is a multiline text to edit" + #LF$ + "in the EditorGadget()." + #LF$ + "Place the cursor inside this text" + #LF$ + "and press the Button.")
ButtonGadget(#Button, (400-100)/2, 170, 100, 40, "Insert")
BindGadgetEvent(#Button, @ButtonGadgetEvent())
Hygge
stevie1401
Beiträge: 643
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Editorgadget Cursor stelle auslesen

Beitrag von stevie1401 »

Genial! :)
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1
Antworten