Seite 1 von 1

Probleme beim schreiben im openscreen()

Verfasst: 07.02.2005 14:08
von captain third
ich hab mal im codearchiv gegugt da habe ich diesen code gefunden

Code: Alles auswählen

Structure Key 
  Zeichen.s 
  Code.l 
EndStructure 
NewList Key.Key() 

Procedure AddKey(Zeichen.s, Code.l) 
  AddElement(Key()) 
  Key()\Zeichen = Zeichen 
  Key()\Code = Code 
EndProcedure 

Procedure InitKeys() 
  ;Buchstaben von a bis z 
  AddKey("a", #PB_Key_A) 
  AddKey("b", #PB_Key_B) 
  AddKey("c", #PB_Key_C) 
  AddKey("d", #PB_Key_D) 
  AddKey("e", #PB_Key_E) 
  AddKey("f", #PB_Key_F) 
  AddKey("g", #PB_Key_G) 
  AddKey("h", #PB_Key_H) 
  AddKey("i", #PB_Key_I) 
  AddKey("j", #PB_Key_J) 
  AddKey("k", #PB_Key_K) 
  AddKey("l", #PB_Key_L) 
  AddKey("m", #PB_Key_M) 
  AddKey("n", #PB_Key_N) 
  AddKey("o", #PB_Key_O) 
  AddKey("p", #PB_Key_P) 
  AddKey("q", #PB_Key_Q) 
  AddKey("r", #PB_Key_R) 
  AddKey("s", #PB_Key_S) 
  AddKey("t", #PB_Key_T) 
  AddKey("u", #PB_Key_U) 
  AddKey("v", #PB_Key_V) 
  AddKey("w", #PB_Key_W) 
  AddKey("x", #PB_Key_X) 
  AddKey("y", #PB_Key_Y) 
  AddKey("z", #PB_Key_Z) 
  
  ;Zahlen von 1 bis 0 
  AddKey("1", #PB_Key_1) 
  AddKey("2", #PB_Key_2) 
  AddKey("3", #PB_Key_3) 
  AddKey("4", #PB_Key_4) 
  AddKey("5", #PB_Key_5) 
  AddKey("6", #PB_Key_6) 
  AddKey("7", #PB_Key_7) 
  AddKey("8", #PB_Key_8) 
  AddKey("9", #PB_Key_9) 
  AddKey("0", #PB_Key_0) 
  
  ;Sonderzeichen 
  AddKey(" ", #PB_Key_Space) 
EndProcedure 

Procedure.s GetKeyboardReleasedKey() 
  ResetList(Key()) 
  Shift.l = #False 
  While NextElement(Key()) 
    If KeyboardReleased(Key()\Code) 
      If KeyboardPushed(#PB_Key_LeftShift) Or KeyboardPushed(#PB_Key_RightShift) 
        Shift = #True 
        Zeichen.s = UCase(Key()\Zeichen) 
      Else 
        If Shift = #False : Zeichen.s = Key()\Zeichen : EndIf 
      EndIf 
    EndIf 
  Wend 
  ProcedureReturn Zeichen 
EndProcedure 

InitKeys() 

InitSprite() 
InitKeyboard() 
OpenScreen(800, 600, 16, "Eingabe") 
Eingabe.s = "" 
Repeat 
  ExamineKeyboard() 
  ClearScreen(0, 0, 0) 
    Eingabe = Eingabe + GetKeyboardReleasedKey() 
    If KeyboardReleased(#PB_KEY_BACK) 
      If Len(Eingabe) 
        Eingabe = Mid(Eingabe, 1, Len(Eingabe) - 1) 
      EndIf 
    EndIf 
    
    StartDrawing(ScreenOutput()) 
      DrawingMode(1) 
      Locate(0,100) 
      FrontColor(100,255,0) 
      DrawText(Eingabe) 
    StopDrawing() 
    FlipBuffers() 
Until KeyboardPushed(#PB_Key_Escape) 
CloseScreen()
funktioniert,ich wollt da noch reinbauen wenn man auf enter drückt das er dann ne neue zeile macht und sich die vorige zeile merkt,also fürs spätere abspeichern dann...

könnt ihr mir helfen?ich habs schon irgendwie versucht aber nix is dabei rausgekommen

Verfasst: 07.02.2005 22:43
von KeyKon

Code: Alles auswählen

Structure Key 
  Zeichen.s 
  Code.l 
EndStructure 
NewList Key.Key() 




Procedure AddKey(Zeichen.s, Code.l) 
  AddElement(Key()) 
  Key()\Zeichen = Zeichen 
  Key()\Code = Code 
EndProcedure 

Procedure InitKeys() 
  ;Buchstaben von a bis z 
  AddKey("a", #PB_Key_A) 
  AddKey("b", #PB_Key_B) 
  AddKey("c", #PB_Key_C) 
  AddKey("d", #PB_Key_D) 
  AddKey("e", #PB_Key_E) 
  AddKey("f", #PB_Key_F) 
  AddKey("g", #PB_Key_G) 
  AddKey("h", #PB_Key_H) 
  AddKey("i", #PB_Key_I) 
  AddKey("j", #PB_Key_J) 
  AddKey("k", #PB_Key_K) 
  AddKey("l", #PB_Key_L) 
  AddKey("m", #PB_Key_M) 
  AddKey("n", #PB_Key_N) 
  AddKey("o", #PB_Key_O) 
  AddKey("p", #PB_Key_P) 
  AddKey("q", #PB_Key_Q) 
  AddKey("r", #PB_Key_R) 
  AddKey("s", #PB_Key_S) 
  AddKey("t", #PB_Key_T) 
  AddKey("u", #PB_Key_U) 
  AddKey("v", #PB_Key_V) 
  AddKey("w", #PB_Key_W) 
  AddKey("x", #PB_Key_X) 
  AddKey("y", #PB_Key_Y) 
  AddKey("z", #PB_Key_Z) 
  
  ;Zahlen von 1 bis 0 
  AddKey("1", #PB_Key_1) 
  AddKey("2", #PB_Key_2) 
  AddKey("3", #PB_Key_3) 
  AddKey("4", #PB_Key_4) 
  AddKey("5", #PB_Key_5) 
  AddKey("6", #PB_Key_6) 
  AddKey("7", #PB_Key_7) 
  AddKey("8", #PB_Key_8) 
  AddKey("9", #PB_Key_9) 
  AddKey("0", #PB_Key_0) 
  
  ;Sonderzeichen 
  AddKey(" ", #PB_Key_Space) 
EndProcedure 

Procedure.s GetKeyboardReleasedKey() 
  ResetList(Key()) 
  Shift.l = #False 
  While NextElement(Key()) 
    If KeyboardReleased(Key()\Code) 
      If KeyboardPushed(#PB_Key_LeftShift) Or KeyboardPushed(#PB_Key_RightShift) 
        Shift = #True 
        Zeichen.s = UCase(Key()\Zeichen) 
      Else 
        If Shift = #False : Zeichen.s = Key()\Zeichen : EndIf 
      EndIf 
    EndIf 
  Wend 
  ProcedureReturn Zeichen 
EndProcedure 

InitKeys() 

InitSprite() 
InitKeyboard() 
OpenScreen(800, 600, 16, "Eingabe") 
Eingabe.s = "" 
Repeat 
  ExamineKeyboard() 
  ClearScreen(0, 0, 0) 
    Eingabe = Eingabe + GetKeyboardReleasedKey() 
    If KeyboardReleased(#PB_KEY_BACK) 
      If Len(Eingabe) 
        Eingabe = Mid(Eingabe, 1, Len(Eingabe) - 1) 
      EndIf 
    EndIf 
    

    if KeyboardReleased(#PB_Key_Enter)
      Eingabe+chr(10)
    endif 
    
    
    StartDrawing(ScreenOutput()) 
      DrawingMode(1) 
      Locate(0,100) 
      FrontColor(100,255,0) 
      DrawText(Eingabe) 
    StopDrawing() 
    FlipBuffers() 
Until KeyboardPushed(#PB_Key_Escape) 
CloseScreen() 
Keine ahnung ob das geht(habs jetzt nicht getestet)
Vielleicht meinst dus ja auch anders als ichs verstanden hab...

KeyKon

Verfasst: 08.02.2005 03:16
von captain third
erstmal ein recht herzlichen dank an dir,wenigstens eine antwort,auch wenn dies net funzt,bin trotzdem erfreut das sich wenigstens einer meldet

ne der code funzt net,da wird dann einfach bloß ein strich angezeigt,und des heist

Code: Alles auswählen

(#PB_Button_Return) net Enter...aber trotzdem danke  :mrgreen: 
genauso hab ichs nämlich auch probiert...

Verfasst: 08.02.2005 04:26
von Hroudtwolf

Code: Alles auswählen

Declare keys()
Declare ansicht()
InitSprite():InitKeyboard()
Dim text$(60)
Global zeile
zeile=1
If OpenScreen (800,600,16,"schreiben")


Repeat
FlipBuffers()
ClearScreen(0,0,0)
ansicht()
ExamineKeyboard()
keys()
Until KeyboardPushed(#pb_key_Escape)
End

EndIf 


Procedure keys()
If KeyboardReleased(#pb_key_a):text$(zeile)=text$(zeile)+"a":EndIf 
If KeyboardReleased(#pb_key_b):text$(zeile)=text$(zeile)+"b":EndIf 
If KeyboardReleased(#pb_key_c):text$(zeile)=text$(zeile)+"c":EndIf 
If KeyboardReleased(#pb_key_d):text$(zeile)=text$(zeile)+"d":EndIf 
If KeyboardReleased(#pb_key_e):text$(zeile)=text$(zeile)+"e":EndIf 
;etc....
If KeyboardReleased(#pb_key_return):zeile=zeile+1:EndIf 
EndProcedure 


Procedure ansicht ()
If  StartDrawing (ScreenOutput())
DrawingMode(1)
FrontColor (255,255,255)
For x=1 To 60
Locate (10,x*10)
einzel$=text$(x)
DrawText (einzel$)
Next x
StopDrawing()
EndIf 
EndProcedure 
ich hoffe es hilft dir !

Verbesserungsidee: das ganze vorher in ein Sprite rendern.

Verfasst: 08.02.2005 23:57
von KeyKon
@captain third War schon recht müde... Hab außerdem kein PB zur Hand und konnte nicht testen

Verfasst: 09.02.2005 00:51
von captain third
@ wolf
danke
@Keykon
achso....ich danke dir trotzdem für die antwort