Seite 1 von 1

Mehrzeiligen Text eingeben mit keybd_event_ geht nicht

Verfasst: 03.11.2008 23:41
von Fairman68
Hallo alle zusammen,

ich versuche seit Tagen fieberhaft einen mehrzeiligen Text per -Button-Klick- in ein StringGadget einzufügen, dazu muss sozusagen die "Return" Taste nach jeder Zeile gedrückt werden. Mein Ziel ist es mit mehreren vordefinierten Textbausteinen zu arbeiten die dann nur auf Klick eingefügt werden.

Soweit funzt alles bis auf die Reihenfolge der Befehle, erst schreibt er die Zeilen alle hintereinander und dann haut er die "Returns" darunter.

Warum? /:->

Ich hoffe doch das ich hier bei den Profis Hilfe finde und bedanke mich jetzt schonmal für die Antworten.

Code: Alles auswählen


If OpenWindow(0, 100, 100, 600, 300, "Eifügen", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)

If CreateGadgetList(WindowID(0))
    ButtonGadget (2311, 450 , 30, 120, 35, "Einfügen")
    StringGadget (2305, 20, 30, 400, 200, "",#ES_MULTILINE | #WS_VSCROLL | #WS_HSCROLL)
EndIf

SetActiveGadget(2305)

  Repeat
    EventID = WaitWindowEvent()
      Select EventID
        Case #PB_Event_Gadget 
          Select EventGadget()
            Case 2311
              SendMessage_(GadgetID(2305),#EM_REPLACESEL,0,"Zeile 1"):
              keybd_event_(#VK_RETURN,0,0,0) 
              keybd_event_(#VK_RETURN,0,#KEYEVENTF_KEYUP,0) 
              Delay(60)
              
              SendMessage_(GadgetID(2305),#EM_REPLACESEL,0,"Zeile 2"):
              keybd_event_(#VK_RETURN ,0,0,0)
              
              SendMessage_(GadgetID(2305),#EM_REPLACESEL,0,"Zeile 3"):
              keybd_event_(#VK_RETURN ,0,0,0)
              
              SetActiveGadget(2305)
          EndSelect
        Case #PB_Event_CloseWindow 
          Quit = 1
      EndSelect
      
Until Quit = 1
  
EndIf
End


Re: Mehrzeiligen Text eingeben mit keybd_event_ geht nicht

Verfasst: 03.11.2008 23:59
von Kiffi
mh, wieso nicht wie folgt?

Code: Alles auswählen

[...]
Select EventGadget()
  Case 2311
    SendMessage_(GadgetID(2305),#EM_REPLACESEL,0,"Zeile 1" + #CRLF$)
    SendMessage_(GadgetID(2305),#EM_REPLACESEL,0,"Zeile 2" + #CRLF$)
    SendMessage_(GadgetID(2305),#EM_REPLACESEL,0,"Zeile 3" + #CRLF$)
    SetActiveGadget(2305)
EndSelect
[...]
Grüße ... Kiffi

Edit:

oder Du nimmst ein Editorgadget:

Code: Alles auswählen

Case 2311
  AddGadgetItem(2305, -1, "Zeile 1")
  AddGadgetItem(2305, -1, "Zeile 2")
  AddGadgetItem(2305, -1, "Zeile 3")
  SetActiveGadget(2305)
EndSelect

Verfasst: 04.11.2008 00:02
von Kaeru Gaman
also, was mir auf die schnelle auffällt...

wenn du auf button 2311 reagierst, hat dieser den focus, nicht das textgadget.
also kommen deine returns da nicht an.


grundsätzlich würde ich diese problemstellung auch eher über ein einfügen in einen string lösen, anstatt tastendrücke zu senden.

Verfasst: 04.11.2008 00:02
von Falko
Ich denke mal, wenn du dieses hier vergleichst, siehst du warum
da die Returns mit eingefügt werden.

Code: Alles auswählen

If OpenWindow(0, 100, 100, 600, 300, "Eifügen", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)

If CreateGadgetList(WindowID(0))
    ButtonGadget (2311, 450 , 30, 120, 35, "Einfügen")
    StringGadget (2305, 20, 30, 400, 200, "",#ES_MULTILINE | #WS_VSCROLL | #WS_HSCROLL)
EndIf

SetActiveGadget(2305)

  Repeat
    EventID = WaitWindowEvent()
      Select EventID
        Case #PB_Event_Gadget
          Select EventGadget()
            Case 2311
              SendMessage_(GadgetID(2305),#EM_REPLACESEL,0,"Zeile 1"):
              keybd_event_(#VK_RETURN,0,0,0)
              keybd_event_(0,0,#KEYEVENTF_KEYUP,0)
              Delay(60)
             
              SendMessage_(GadgetID(2305),#EM_REPLACESEL,0,"Zeile 2"):
              keybd_event_(0,0,0,0)
             
              SendMessage_(GadgetID(2305),#EM_REPLACESEL,0,"Zeile 3"):
              keybd_event_(0,0,0,0)
             
              SetActiveGadget(2305)
          EndSelect
        Case #PB_Event_CloseWindow
          Quit = 1
      EndSelect
     
Until Quit = 1
 
EndIf
End
[Edit] leider zu spät geantwortet :lol:

Gruß Falko

Vielen vielen Dank.

Verfasst: 05.11.2008 09:07
von Fairman68
Hallo.
ich wusste zwar das ihr schnell seid, aber das haut mich von den Socken :allright:

Kiffi, das ist genau das was ich suchte.
Vielen vielen dank an euch alle, ihr seid spitze. :)