Autor Beitrag
mortus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: So 12.01.03 23:45 
ich moechte den im eingabefeld einer combobox (mit createwindow erzeugt) aktuell selektierten text per klick auf einen button ersetzen. habe es mit SendMessage(FindWindowEx(comboboxhandle,0,'EDIT',nil),EM_REPLACESEL,256,integer(@buffer)); probiert. der text in buffer wird auch eingefuegt, allerdings vor dem urspruenglichen inhalt der combobox, egal wie die caret-position zuvor war. ich vermute, dass der caret in der combobox automatisch wieder nach vorne rutscht, wenn die combobox den fokus verliert. weiss jm rat? :)[/code]
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 13.01.03 00:14 
Versuch mal WM_SETTEXT.
mortus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mo 13.01.03 18:15 
hab mich missverstaendlich ausgedrueckt ;)
wenn ich im editfeld der combobox einen teil des inhalts markiere: zb von delphi-forum elphi, dann moechte ich, dass der markierte text beim klick auf den button ersetzt wird. bei edits geht das mit EM_REPLACESEL. wenn die combobox aber den fokus verliert (wenn man auf den button klickt), dann springt der caret an die stelle 0 -> SendMessage(FindWindowEx(comboboxhandle,0,'EDIT',nil),EM_REPLACESEL,256,integer(@buffer)); funktioniert wahrscheinlich, da der text ja an stelle 0 angefuegt wird. man muesste also vielleicht verhindern, dass der caret an position 0 springt, wenn die combobox den fokus verliert.
mortus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Di 14.01.03 19:47 
habe es vorerst so geloest: im parent-fenster reagiere ich auf WM_COMMAND: CBN_SELENDCANCEL und speichere Anfangs- und Endposition der Textmarkierung per SendMessage(ComboBox,CB_GETEDITSEL,integer(@SelStart),integer(@SelEnd)) beim klicken auf den button (der den markierten text ersetzen soll) benutze ich dann diese variablen, um mittels WM_GETTEXT und WM_SETTEXT den text zu ersetzen.