Code archives/BlitzPlus Gui/GadGetKey_TextArea

This code has been declared by its author to be Public Domain code.

Download source code

GadGetKey_TextArea by ShadowTurtle2003
Hi.

Here is a small sample:

...
While Programm
...
A$ = GadGetKey_TextArea(MyTextArea)
If A$ = "j" Then RuntimeError "You pressed 'j' in TextArea"
Wend
wnd = CreateWindow("GadGet Key - Test", 10, 10, 400, 400, 0, 1) 
butn1 = CreateButton("Exit.", 2, 2, 100, 30, wnd) 
textlabel = CreateLabel("Please press a key in textarea.", 120, 2, 200, 20, wnd) 

textarea = CreateTextArea(2, 40, 388, 300, wnd) 

Programm = 1 
While Programm 
  MyEvent = WaitEvent() 
  If EventSource() = butn1 Then Programm = 0 

  If EventSource() = textarea Then 
    I$ = GadGetKey_TextArea$(textarea) 
    SetGadgetText textlabel, "You have lost pressed: " + I$ 
  End If 
Wend 


Type ScanGadGetKey 
  Field GadGetHandle 
  Field LostGadGetText$ 
  Field NewGadGetText$ 
  Field GadGetType 
End Type 

Function GadGetKey_TextArea$(objhandle) 
  Local SGGK.ScanGadGetKey 
  SGGK = Null 
  For ScanGadGetKey.ScanGadGetKey = Each ScanGadGetKey 
    If ScanGadGetKey\GadGetHandle = objhandle Then SGGK = ScanGadGetKey 
  Next 

  If SGGK = Null Then 
    SGGK.ScanGadGetKey = New ScanGadGetKey 
    SGGK\GadGetHandle = objhandle 
    SGGK\LostGadGetText$ = TextAreaText$(objhandle) 
    SGGK\GadGetType = 0 
    Return GadGetKey_TextArea$(objhandle) 
  Else 
    SGGK\LostGadGetText$ = SGGK\NewGadGetText$ 
    SGGK\NewGadGetText$ = TextAreaText$(SGGK\GadGetHandle) 
    For GGKT = 1 To Len(SGGK\NewGadGetText$) 
      If Not (Mid$(SGGK\NewGadGetText$, GGKT, 1) = Mid$(SGGK\LostGadGetText$, GGKT, 1)) Then 
        Return Mid$(SGGK\NewGadGetText$, GGKT, 1) 
      End If 
    Next 
  End If 
End Function

Comments

danielos2008
could you do this also for mouseclicks and keys like [CTRL] and [Enter] ?


ShadowTurtle2008
This isnt possible without winapi, i think. The solution on top uses only blitzplus commands. No winapi-userlib is required.


Code Archives Forum