Text in editor gadget einfügen

Anfängerfragen zum Programmieren mit PureBasic.
DW

Text in editor gadget einfügen

Beitrag von DW »

Hallo, wie kann man über WinAPI einen text in das editor gadget einfügen?
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

wieso winapi???
hat das eine bewandniss, das es üebr winapi sein muss???
sonst mach einfach
setgadgettext(#editor,text)
DW

Beitrag 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.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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???
DW

Beitrag 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.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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
DW

Beitrag 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.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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
Zuletzt geändert von a14xerus am 07.10.2006 21:52, insgesamt 1-mal geändert.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag 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:
Zuletzt geändert von Green Snake am 07.10.2006 21:54, insgesamt 1-mal geändert.
-.-"
DW

Beitrag 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.
Antworten