Seite 1 von 2

Inputrequester bei einem Screen

Verfasst: 10.04.2005 15:57
von zigapeda
Hi Leutz hab einen Screen und möchte das der User einen Namen eingibt. Der Inputrequester funktioniert nicht, gibt es eine Alternative?

Verfasst: 10.04.2005 16:07
von 125
guck dir mal die beiden Posts von Danilo in dem Thread an die dürften dein Prob lösen (schau dir mal die beiden Exes im Archive des ersten posts an :D ):

http://forums.purebasic.com/german/view ... b&start=10

Verfasst: 10.04.2005 16:23
von zigapeda
Gibt es auch die möglichkeit ein art Testfeld zu erstellen?

Verfasst: 10.04.2005 16:30
von 125
wie meinst das`?

Verfasst: 10.04.2005 16:31
von Leo
Er meint sicher Textfeld^^

Ich hab dazu mal vor längerer Zeit ein paar kleine Proceduren programmiert. Wenn du willst kann ich sie ja hier mal posten :)

Verfasst: 10.04.2005 16:34
von zigapeda
Ups hab mich verschrieben, natürlich hätte das Textfeld heißen sollen. Ja klar kannst du sie mir Posten. Wäre dir dankbar.

Verfasst: 10.04.2005 16:36
von Leo
Irgendwie finde ich sie nich mehr :?
Warte mal kurz ^^

Verfasst: 10.04.2005 22:54
von zigapeda
Wäre dir dankbar wenn du noch was findest brauche es ziemlich dringend sonst kann ich meine ganze idee wegschmeißen :D ok vieleicht nicht ganz wegschmeißen aber noch mal komplet abändern.

Re: Inputrequester bei einem Screen

Verfasst: 11.04.2005 05:03
von Danilo
zigapeda hat geschrieben:Hi Leutz hab einen Screen und möchte das der User einen Namen eingibt. Der Inputrequester funktioniert nicht, gibt es eine Alternative?
Für Screens gibt es bei PB/Windows die Funktion KeyboardInkey().

Du brauchst also nur Name$ + KeyboardInkey(), und schon kann
der User etwas eingeben.
Danach zeigst Du den eingegebenen String einfach noch an.

Um den String herum kannst Du noch selbst etwas malen, z.B.
eine Box oder ein paar Linien - oder von mir aus auch ein ganzes
Fenster.

Beispiel:

Code: Alles auswählen

;
; simple screen input example
;
; by Danilo, 2005/04/11, german forum
;
#ScreenWidth  = 1024
#ScreenHeight =  768
#ScreenName   = "Input Test"



Procedure.s InputProcedure(x,y)
  Static Name$, LastCursorTime, ShowCursor, BackPushed

  ; Input holen
  Name$ + KeyboardInkey()

  ; Backspace erlauben zum loeschen
  If KeyboardPushed(#PB_Key_Back) And BackPushed=0
    Name$ = Left(Name$,Len(Name$)-1)
    BackPushed=ElapsedMilliseconds()
  ElseIf BackPushed
    If ElapsedMilliseconds() >= BackPushed+150
      BackPushed=0
    EndIf
  EndIf

  ; Laenge begrenzen
  len=Len(Name$)
  If len>25
    Name$ = Left(Name$,len-1)
  EndIf

  ; Fenster zeichnen
  If StartDrawing(ScreenOutput())
    Box(x+5,y+5,300,100,$404040)
    Box(x,y,300,100,$D7D628)
    Box(x,y,300,22,$579FA8)
    Line(x    ,y,300,  0,$FFFFFF):Line(x,y    ,  0,100,$FFFFFF)
    Line(x+300,y,  0,100,$000000):Line(x,y+100,300,  0,$000000)
    Locate(x+2,y+2)
    DrawingMode(1)
    DrawText("Bitte Name eingeben")
    Box(x+09,y+29,282,24,$000000)
    Box(x+10,y+30,280,22,$FFFFFF)
    Locate(x+13,y+33)
    DrawText(Name$)

    ; cursor blinken lassen
    time = ElapsedMilliseconds()
    If time >= LastCursorTime+500
      LastCursorTime=time
      ShowCursor ! 1
    EndIf
    ; cursor zeichnen
    If ShowCursor
      ;Line(x+13+TextLength(Name$),y+32,0,18,$000000)
      Line(x+13+TextLength(Name$),y+50,10,0,$000000)
    EndIf

    StopDrawing()
  EndIf

  If KeyboardReleased(#PB_Key_Return) And Name$
    ProcedureReturn Name$
  EndIf
EndProcedure



If InitSprite()=0 Or InitKeyboard()=0
  MessageRequester("ERROR","Cant initialize game engine!"):End
EndIf


If OpenScreen(#ScreenWidth,#ScreenHeight,32,#ScreenName)=0
  If OpenScreen(#ScreenWidth,#ScreenHeight,24,#ScreenName)=0
    If OpenScreen(#ScreenWidth,#ScreenHeight,16,#ScreenName)=0
      MessageRequester("ERROR","Cant open screen ("+Str(#ScreenWidth)+"x"+Str(#ScreenHeight)+")!"):End
EndIf:EndIf:EndIf


Repeat
  ExamineKeyboard()
  If IsScreenActive()
    FlipBuffers()
    ClearScreen($3A,$65,$98)
    If Status = 0
      Name$ = InputProcedure(#ScreenWidth/2-150,#ScreenHeight/2-50)
      If Name$
        Status+1
      EndIf
    Else
      If StartDrawing(ScreenOutput())
        FrontColor($FF,$FF,$FF)
        DrawingMode(1)
        Locate(100,100): DrawText("Ihre Eingabe:")
        Locate(100,130): DrawText("Vielen Dank! Bitte drcken sie eine Taste...")
        FrontColor($00,$00,$00)
        Locate(200,100): DrawText(Name$)
        StopDrawing()
      EndIf
      If KeyboardPushed(#PB_Key_All)
        Quit=#TRUE
      EndIf
    EndIf
  EndIf
Until Quit
Gestalten kannst Du das drumherum wie Du möchtest.

Verfasst: 11.04.2005 06:37
von zigapeda
Sieht gut aus das problem ist nur das ich bei mir nix eingeben kann. Kannst du den code nochmal überprüfen? thx schon mal im voraus