Seite 1 von 2

Text in editor gadget einfügen

Verfasst: 07.10.2006 21:09
von DW
Hallo, wie kann man über WinAPI einen text in das editor gadget einfügen?

Verfasst: 07.10.2006 21:16
von a14xerus
wieso winapi???
hat das eine bewandniss, das es üebr winapi sein muss???
sonst mach einfach
setgadgettext(#editor,text)

Verfasst: 07.10.2006 21:18
von DW
Ups, ich meinte hinzufügen . Weiß zwar, wie es auch per setgadgettext und getgadgettext geht, aber wenn ich dann noch mein oder darkdragons syntaxhighlighting System benutze, dann werden diese Texte nicht hervorgehoben.

Verfasst: 07.10.2006 21:28
von a14xerus
ok, teilweise verteh ich dein anliegen, aebr ganz noch nicht, weil einfügen und hinzufügen ist doch fast das gleiche oder?
ich meine.. wenn man per api einen Text hinzufügt, dann steht er doch auch nur normal im editor, oder nich???

Verfasst: 07.10.2006 21:30
von DW
Ja doch, aber anscheinend hast du einfügen falsch verstanden, da du mir den setgadgettext Befehl , welchen ich schon kannte( :lol: ), gegeben.
Der ist aber uninteressant. Der setzt einen neuen Text in das gadget. Ich will aber eins hinzufügen, und das über die WinAPI.

Verfasst: 07.10.2006 21:33
von a14xerus
ok.. dann versteh ich dein anliegen wirklich nicht^^
also halte ich mich jetz mal heir heruaus..
Ich als "noob" hätet es so gemacht:

Code: Alles auswählen

SetGadgetText(#editor,GetGadgetText(#editor)+neuText$)
Aber das kannst du wohl auch selber^^
Und erhöht beim highlighting (?) die prozz beanspruchung ziemlich

Verfasst: 07.10.2006 21:42
von DW
Das ist keine gute Methode. Denn der Text soll schließlich am Cursor hinzugefügt werden.


>Aber das kannst du wohl auch selber^^
So was würde ich nie benutzen. Wenn du ein noob bist, was bin ich dann?? Ich arbeite mit PB erst seit ca. drei Wochen.

Wenn, dann so:

Code: Alles auswählen

Procedure EditorGadgetCursorPos(Gadget) 

  SendMessage_(GadgetID(Gadget),#EM_EXGETSEL,0,Range.CHARRANGE) 
  ProcedureReturn Range\cpMax 
EndProcedure 

SetGadgetText(#Editor_0,Mid(GetGadgetText(#Editor_0),1,pos)+string$
+Mid(GetGadgetText(#Editor_0),pos,Len(GetGadgetText(#Editor_0))))

Aber das will ich nicht, weil dann die Syntaxhervorhebung nicht richtig klappt.

Verfasst: 07.10.2006 21:49
von a14xerus
achso.. am cursor soll code rein.. so wie zb wenn man einfügen (strg+v) drückt...
aha..
ok schonmal hilfe für die, die dir helfen könne.. aber ich kanns net , sry


Edit für GS:
Den letzen post kann man selber löschen

Verfasst: 07.10.2006 21:51
von Green Snake
Edit: OOps, sry, falsch verstanden
Edit 2:

Versuchs mal mit

Code: Alles auswählen

SendMessage_(GadgetID(Gadget),#EM_REPLACESEL,0,Text$) 

Edit 3 für a14xerus
Nicht mehr nötig :mrgreen:

Verfasst: 07.10.2006 21:54
von DW
>strg+v
Nein, du.

Dafür gibt es das in der API:

Code: Alles auswählen

Procedure EditorGadgetUNDO(Gadget_ID) 
  ProcedureReturn SendMessage_(GadgetID(Gadget_ID), #EM_UNDO, 0, 0) 
EndProcedure 

Procedure EditorGadgetREDO(Gadget_ID) 
  ProcedureReturn SendMessage_(GadgetID(Gadget_ID), #EM_REDO, 0, 0) 
EndProcedure 

Procedure EditorGadgetCOPY(Gadget_ID) 
  ProcedureReturn SendMessage_(GadgetID(Gadget_ID), #WM_COPY, 0, 0) 
EndProcedure 

Procedure EditorGadgetPASTE(Gadget_ID) 
  ProcedureReturn SendMessage_(GadgetID(Gadget_ID), #EM_PASTESPECIAL, 0, 0) 
EndProcedure 

Procedure EditorGadgetCUT(Gadget_ID) 
  ProcedureReturn SendMessage_(GadgetID(Gadget_ID), #WM_CUT, 0, 0) 
EndProcedure 

 

Ich will aber selber einen String einfügen. Nicht das, was in der Zwischenablage ist.