Super Eingabe Funktion mit Eingabemaske
Übersicht

FlorianBetreff: Super Eingabe Funktion mit Eingabemaske |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eingabe Funktion
ID=CreateEingabe(Maske$,X,Y) Maske$ "#" steht für eine Ziffer "$" steht für einen Buchstanden "0123456789" stellt eine maximale Zahl da SetAktiv ID,True SetAktiv ID,false EnterGedruckt(ID) gibt True zurück ,wenn eine Eingabe eingegeben wurde. Code: [AUSKLAPPEN] Type EingabeTyp Field Txt$ Field Maske$ Field Eingegeben$ Field X,Y Field Cursor Field Enter End Type Global Eingabe_Aktiv Global Eingabe.EingabeTyp Global Timer=CreateTimer(20) Graphics 640,480,0,2 SetBuffer BackBuffer() Global Schrift=LoadFont("Courier New",52) IP_Eingabe =CreateEingabe("IP= 255.255.255.255",30,30) Name_Eingabe=CreateEingabe("Name:$$$$$$$$$$$$$$$",30,140) SetAktiv IP_Eingabe,True ClsColor 255,255,0 Repeat Cls UpdateEingabe Color 0,0,0 Text 175,90 ,GetEingabe$(IP_Eingabe,1)+"."+GetEingabe$(IP_Eingabe,2)+"."+GetEingabe$(IP_Eingabe,3)+"."+GetEingabe$(IP_Eingabe,4) Text 175,190,GetEingabe$(Name_Eingabe,1) If EnterGedruckt(IP_Eingabe)=True Then SetAktiv Name_Eingabe,True EndIf If EnterGedruckt(Name_Eingabe)=True Then SetAktiv IP_Eingabe,True EndIf Flip WaitTimer Timer Forever Function CreateEingabe(Maske$,X,Y) Eingabe=New EingabeTyp Eingabe\Txt$=Maske$ Eingabe\Txt$=Replace(Eingabe\Txt$,"#","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"$"," ") Eingabe\Txt$=Replace(Eingabe\Txt$,"0","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"1","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"2","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"3","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"4","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"5","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"6","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"7","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"8","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"9","0") Eingabe\Maske$=Maske$ Eingabe\X =X Eingabe\Y =Y Eingabe\Cursor=Instr(Eingabe\Maske$,"#") MaskeLang=Len(Eingabe\Maske$) For P=1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#" ,"0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next Eingabe\Eingegeben$=Eingabe\Txt$ Return Handle(Eingabe) End Function Function EnterGedruckt(ID) obj.EingabeTyp=Object.EingabeTyp(ID) If obj=Null Then Return Return obj\Enter End Function Function GetEingabe$(ID,Pos) obj.EingabeTyp=Object.EingabeTyp(ID) If obj=Null Then Return EingabeLang=Len(Obj\Eingegeben$) For P=1 To EingabeLang Select Mid$(Obj\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" PosNr=PosNr+1 For P=P To EingabeLang Select Mid$(Obj\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" If Pos=PosNr Then Wert$=Wert$+Mid$(Obj\Eingegeben$,P,1) EndIf Default If Pos=PosNr Then Return Wert$ EndIf Exit End Select Next If Pos=PosNr Then Return Wert$ EndIf End Select Next End Function Function Setaktiv(ID,aktiv) If Aktiv=True Then Eingabe_Aktiv=ID Else If Eingabe_Aktiv=ID Then Eingabe_Aktiv=0 EndIf EndIf End Function Function DeleteEingabe(ID) obj.EingabeTyp=Object.EingabeTyp(ID) If obj=Null Then Return Setaktiv ID,False Delete obj End Function Function UpdateEingabe() If KeyHit(205)=True Then Rechts=True If KeyHit(203)=True Then Links=True If KeyHit(199)=True Then Pos1=True If KeyHit(207)=True Then Ende=True If KeyHit(28)=True Or KeyHit(156) Then Enter=True If KeyDown(29)=True Or KeyDown(157)=True Then Strg=True If KeyDown(42)=True Or KeyDown(54)=True Then Shift=True If KeyHit(14)=True Then Backspace=True If KeyDown(211)=True Then Entf=True If KeyHit(82)=True Or KeyHit(11)=True Then Key$="0":InputTyp$="#" If KeyHit(79)=True Or KeyHit( 2)=True Then Key$="1":InputTyp$="#" If KeyHit(80)=True Or KeyHit( 3)=True Then Key$="2":InputTyp$="#" If KeyHit(81)=True Or KeyHit( 4)=True Then Key$="3":InputTyp$="#" If KeyHit(75)=True Or KeyHit( 5)=True Then Key$="4":InputTyp$="#" If KeyHit(76)=True Or KeyHit( 6)=True Then Key$="5":InputTyp$="#" If KeyHit(77)=True Or KeyHit( 7)=True Then Key$="6":InputTyp$="#" If KeyHit(71)=True Or KeyHit( 8)=True Then Key$="7":InputTyp$="#" If KeyHit(72)=True Or KeyHit( 9)=True Then Key$="8":InputTyp$="#" If KeyHit(73)=True Or KeyHit(10)=True Then Key$="9":InputTyp$="#" If KeyHit(30)=True Then InputTyp$="$" If Shift=True Then Key$="A" Else Key$="a" EndIf EndIf If KeyHit(48)=True Then InputTyp$="$" If Shift=True Then Key$="B" Else Key$="b" EndIf EndIf If KeyHit(46)=True Then InputTyp$="$" If Shift=True Then Key$="C" Else Key$="c" EndIf EndIf If KeyHit(32)=True Then InputTyp$="$" If Shift=True Then Key$="D" Else Key$="d" EndIf EndIf If KeyHit(18)=True Then InputTyp$="$" If Shift=True Then Key$="E" Else Key$="e" EndIf EndIf If KeyHit(33)=True Then InputTyp$="$" If Shift=True Then Key$="F" Else Key$="f" EndIf EndIf If KeyHit(34)=True Then InputTyp$="$" If Shift=True Then Key$="G" Else Key$="g" EndIf EndIf If KeyHit(35)=True Then InputTyp$="$" If Shift=True Then Key$="H" Else Key$="h" EndIf EndIf If KeyHit(23)=True Then InputTyp$="$" If Shift=True Then Key$="I" Else Key$="i" EndIf EndIf If KeyHit(36)=True Then InputTyp$="$" If Shift=True Then Key$="J" Else Key$="j" EndIf EndIf If KeyHit(37)=True Then InputTyp$="$" If Shift=True Then Key$="K" Else Key$="k" EndIf EndIf If KeyHit(38)=True Then InputTyp$="$" If Shift=True Then Key$="L" Else Key$="l" EndIf EndIf If KeyHit(50)=True Then InputTyp$="$" If Shift=True Then Key$="M" Else Key$="m" EndIf EndIf If KeyHit(49)=True Then InputTyp$="$" If Shift=True Then Key$="N" Else Key$="n" EndIf EndIf If KeyHit(24)=True Then InputTyp$="$" If Shift=True Then Key$="O" Else Key$="o" EndIf EndIf If KeyHit(25)=True Then InputTyp$="$" If Shift=True Then Key$="P" Else Key$="p" EndIf EndIf If KeyHit(16)=True Then InputTyp$="$" If Shift=True Then Key$="Q" Else Key$="q" EndIf EndIf If KeyHit(19)=True Then InputTyp$="$" If Shift=True Then Key$="R" Else Key$="r" EndIf EndIf If KeyHit(31)=True Then InputTyp$="$" If Shift=True Then Key$="S" Else Key$="s" EndIf EndIf If KeyHit(20)=True Then InputTyp$="$" If Shift=True Then Key$="T" Else Key$="t" EndIf EndIf If KeyHit(22)=True Then InputTyp$="$" If Shift=True Then Key$="U" Else Key$="u" EndIf EndIf If KeyHit(47)=True Then InputTyp$="$" If Shift=True Then Key$="V" Else Key$="v" EndIf EndIf If KeyHit(17)=True Then InputTyp$="$" If Shift=True Then Key$="W" Else Key$="w" EndIf EndIf If KeyHit(45)=True Then InputTyp$="$" If Shift=True Then Key$="X" Else Key$="x" EndIf EndIf If KeyHit(44)=True Then InputTyp$="$" If Shift=True Then Key$="Y" Else Key$="y" EndIf EndIf If KeyHit(21)=True Then InputTyp$="$" If Shift=True Then Key$="Z" Else Key$="z" EndIf EndIf If KeyHit(40)=True Then InputTyp$="$" If Shift=True Then Key$="Ä" Else Key$="ä" EndIf EndIf If KeyHit(39)=True Then InputTyp$="$" If Shift=True Then Key$="Ö" Else Key$="ö" EndIf EndIf If KeyHit(26)=True Then InputTyp$="$" If Shift=True Then Key$="Ü" Else Key$="ü" EndIf EndIf If KeyHit(12)=True Then InputTyp$="$" Key$="ß" EndIf If KeyHit(57)=True Then InputTyp$="$" Key$=" " EndIf For Eingabe=Each EingabeTyp Eingabe\Enter=False If Handle(Eingabe)=Eingabe_Aktiv Then If Len(Key$)>0 Then If Mid$(Eingabe\Maske$,Eingabe\Cursor,1)=InputTyp$ Then Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-1)+Key$+Mid$(Eingabe\Txt$,Eingabe\Cursor+1) MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next Else If InputTyp$="#" Then Select Mid$(Eingabe\Maske$,Eingabe\Cursor,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" MaskeZiffer$="" ZifferVorZeichen$="" If Eingabe\Cursor>1 Then For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "0","1","2","3","4","5","6","7","8","9" ZifferVorZeichen$=Mid$(Eingabe\Txt$,P,1)+ZifferVorZeichen$ MaskeZiffer$=Mid$(Eingabe\Maske$,P,1)+MaskeZiffer$ Default Exit End Select Next EndIf MaskeZiffer$=MaskeZiffer$+Mid$(Eingabe\Maske$,Eingabe\Cursor,1) ZifferNachZeichen$="" MaskeLang=Len(Eingabe\Maske$) If Eingabe\Cursor<MaskeLang Then For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "0","1","2","3","4","5","6","7","8","9" ZifferNachZeichen$=ZifferNachZeichen$+Mid$(Eingabe\Txt$,P,1) MaskeZiffer$=MaskeZiffer$+Mid$(Eingabe\Maske$,P,1) Default Exit End Select Next EndIf VerZahl$=ZifferVorZeichen$+Key$+ZifferNachZeichen$ If Int(VerZahl$)=<Int(MaskeZiffer$) Then Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-1)+Key$+Mid$(Eingabe\Txt$,Eingabe\Cursor+1) For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf End Select EndIf EndIf ElseIf Rechts=True And Strg=True Then MaskeLang=Len(Eingabe\Maske$) ZeichenGefunden=False For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P ZeichenGefunden=True Default Exit End Select Next If ZeichenGefunden=False Then MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf ElseIf Links=True And Strg=True Then If Eingabe\Cursor>1 Then MaskeLang=Len(Eingabe\Maske$) ZeichenGefunden=False For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P ZeichenGefunden=True Default Exit End Select Next If ZeichenGefunden=False Then For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf EndIf ElseIf Rechts=True Then MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next ElseIf Links=True Then If Eingabe\Cursor>1 Then MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf ElseIf Pos1=True Then MaskeLang=Len(Eingabe\Maske$) For P=1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next ElseIf Ende=True Then MaskeLang=Len(Eingabe\Maske$) For P=1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P End Select Next ElseIf Entf=True Then Select Mid$(Eingabe\Maske$,Eingabe\Cursor,1) Case "#","0","1","2","3","4","5","6","7","8","9" Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-1)+"0"+Mid$(Eingabe\Txt$,Eingabe\Cursor+1) Case "$" Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-1)+" "+Mid$(Eingabe\Txt$,Eingabe\Cursor+1) End Select ElseIf Backspace=True Then If Eingabe\Cursor>1 Then Select Mid$(Eingabe\Maske$,Eingabe\Cursor-1,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Default MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P+1,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next End Select Select Mid$(Eingabe\Maske$,Eingabe\Cursor-1,1) Case "#","0","1","2","3","4","5","6","7","8","9" Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-2)+"0"+Mid$(Eingabe\Txt$,Eingabe\Cursor) If Eingabe\Cursor>1 Then MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf Case "$" Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-2)+" "+Mid$(Eingabe\Txt$,Eingabe\Cursor) If Eingabe\Cursor>1 Then MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf Default Eingabe\Cursor=Eingabe\Cursor+1 End Select EndIf ElseIf Enter=True Then Eingabe\Eingegeben$=Eingabe\Txt$ Eingabe\Enter=True EndIf EndIf Next DrawEingabe End Function Function DrawEingabe() SetFont Schrift Zeit=MilliSecs() For Eingabe=Each EingabeTyp Color 0,0,$33CC33 Rect Eingabe\X,Eingabe\Y,StringWidth(Eingabe\Txt$),FontHeight() Textlang=Len(Eingabe\Txt$) For P=1 To Textlang Select Mid$(Eingabe\Maske$,P,1) Case "#","0","1","2","3","4","5","6","7","8","9" Color 0,0,$3333FF Case "$" Color 255,0,128 Default Color 255,255,0 End Select Text Eingabe\X+StringWidth(Left$(Eingabe\Txt$,P-1)),Eingabe\Y,Mid$(Eingabe\Txt$,P,1) Next If (Zeit/300) Mod 2 Then If Handle(Eingabe)=Eingabe_Aktiv Then If Eingabe\Cursor>0 Then Color 0,0,$FF9900 Rect Eingabe\X+StringWidth(Left$(Eingabe\Txt$,Eingabe\Cursor-1)),Eingabe\Y,2,FontHeight() EndIf EndIf EndIf Next End Function |
||
- Zuletzt bearbeitet von Florian am Mi, Feb 01, 2006 18:14, insgesamt 7-mal bearbeitet
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi! Scheinst dir ja viel Mühe gemacht zu haben.
Leider "funzt" bei mir noch nicht alles. Zum Beispiel bei der Texteingabe das Löschen von Zeichen mittels Backspace[<-]. Da wird nur jedes zweite Zeichen gelöscht. Außerdem gibt es kein Leerzeichen (weiß nicht, ob das beabsichtigt war). Außerdem kann man den Curser soweit "backspacen", dass er vor dem Eingabefeld steht. ![]() Also da sind noch leichte Verbesserungen vonnöten. Freue mich auf das Update! Gruß Spion |
||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
sry aber bitte noch etwas genauer erläutern...![]() Code: [AUSKLAPPEN] Function DeleteEingabe(ID) obj.EingabeboxTyp=Object.EingabeboxTyp(ID) If obj=Null Then Return Delete obj End Function |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Probelm mit den Backspace Beseitig.
Eingabe von Leerzeichen ist jetzt möglich. |
||
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jeden Eingabefeld kann eine Tabnummer zugewiesen werden.
Jetzt mit Maus und Tab Unterstützung. Tasten: Rechts Links Pos1 Ende Enter Shift Backspace Entf Code: [AUSKLAPPEN] Type EingabeTyp Field Txt$ Field Maske$ Field Eingegeben$ Field X,Y Field Cursor Field Enter Field TabNum End Type Global Eingabe_Aktiv Global Eingabe.EingabeTyp Global Timer=CreateTimer(20) Global Tabnum Graphics 640,480,0,2 SetBuffer BackBuffer() Global Schrift=LoadFont("Courier New",52) IP_Eingabe =CreateEingabe("IP= 255.255.255.255",1,30,30) Name_Eingabe=CreateEingabe("Name:$$$$$$$$$$$$$$$",2,30,140) SetAktiv IP_Eingabe,True ClsColor 255,255,0 Repeat Cls UpdateEingabe Color 0,0,0 Text 175,90 ,GetEingabe$(IP_Eingabe,1)+"."+GetEingabe$(IP_Eingabe,2)+"."+GetEingabe$(IP_Eingabe,3)+"."+GetEingabe$(IP_Eingabe,4) Text 175,190,GetEingabe$(Name_Eingabe,1) If EnterGedruckt(IP_Eingabe)=True Then SetAktiv Name_Eingabe,True EndIf If EnterGedruckt(Name_Eingabe)=True Then SetAktiv IP_Eingabe,True EndIf Flip WaitTimer Timer Forever Function CreateEingabe(Maske$,Tabnum,X,Y) Eingabe=New EingabeTyp Eingabe\Txt$=Maske$ Eingabe\Txt$=Replace(Eingabe\Txt$,"#","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"$"," ") Eingabe\Txt$=Replace(Eingabe\Txt$,"0","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"1","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"2","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"3","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"4","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"5","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"6","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"7","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"8","0") Eingabe\Txt$=Replace(Eingabe\Txt$,"9","0") Eingabe\Maske$=Maske$ Eingabe\X =X Eingabe\Y =Y Eingabe\Tabnum=Tabnum Eingabe\Cursor=Instr(Eingabe\Maske$,"#") MaskeLang=Len(Eingabe\Maske$) For P=1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#" ,"0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next Eingabe\Eingegeben$=Eingabe\Txt$ Return Handle(Eingabe) End Function Function EnterGedruckt(ID) obj.EingabeTyp=Object.EingabeTyp(ID) If obj=Null Then Return Return obj\Enter End Function Function GetEingabe$(ID,Pos) obj.EingabeTyp=Object.EingabeTyp(ID) If obj=Null Then Return EingabeLang=Len(Obj\Eingegeben$) For P=1 To EingabeLang Select Mid$(Obj\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" PosNr=PosNr+1 For P=P To EingabeLang Select Mid$(Obj\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" If Pos=PosNr Then Wert$=Wert$+Mid$(Obj\Eingegeben$,P,1) EndIf Default If Pos=PosNr Then Return Wert$ EndIf Exit End Select Next If Pos=PosNr Then Return Wert$ EndIf End Select Next End Function Function Setaktiv(ID,aktiv) If Aktiv=True Then Eingabe_Aktiv=ID Else If Eingabe_Aktiv=ID Then Eingabe_Aktiv=0 EndIf EndIf End Function Function DeleteEingabe(ID) obj.EingabeTyp=Object.EingabeTyp(ID) If obj=Null Then Return Setaktiv ID,False Delete obj End Function Function UpdateEingabe() If KeyHit(205)=True Then Rechts=True If KeyHit(203)=True Then Links=True If KeyHit(199)=True Then Pos1=True If KeyHit(207)=True Then Ende=True If KeyHit( 15)=True Then Tab=True If KeyHit( 28)=True Or KeyHit(156) Then Enter=True If KeyDown( 29)=True Or KeyDown(157)=True Then Strg=True If KeyDown( 42)=True Or KeyDown( 54)=True Then Shift=True If KeyHit( 14)=True Then Backspace=True If KeyDown(211)=True Then Entf=True If KeyHit( 82)=True Or KeyHit( 11)=True Then Key$="0":InputTyp$="#" If KeyHit( 79)=True Or KeyHit( 2)=True Then Key$="1":InputTyp$="#" If KeyHit( 80)=True Or KeyHit( 3)=True Then Key$="2":InputTyp$="#" If KeyHit( 81)=True Or KeyHit( 4)=True Then Key$="3":InputTyp$="#" If KeyHit( 75)=True Or KeyHit( 5)=True Then Key$="4":InputTyp$="#" If KeyHit( 76)=True Or KeyHit( 6)=True Then Key$="5":InputTyp$="#" If KeyHit( 77)=True Or KeyHit( 7)=True Then Key$="6":InputTyp$="#" If KeyHit( 71)=True Or KeyHit( 8)=True Then Key$="7":InputTyp$="#" If KeyHit( 72)=True Or KeyHit( 9)=True Then Key$="8":InputTyp$="#" If KeyHit( 73)=True Or KeyHit( 10)=True Then Key$="9":InputTyp$="#" Maus_Druck=GetMouse() MausX=MouseX() MausY=MouseY() If KeyHit(30)=True Then InputTyp$="$" If Shift=True Then Key$="A" Else Key$="a" EndIf EndIf If KeyHit(48)=True Then InputTyp$="$" If Shift=True Then Key$="B" Else Key$="b" EndIf EndIf If KeyHit(46)=True Then InputTyp$="$" If Shift=True Then Key$="C" Else Key$="c" EndIf EndIf If KeyHit(32)=True Then InputTyp$="$" If Shift=True Then Key$="D" Else Key$="d" EndIf EndIf If KeyHit(18)=True Then InputTyp$="$" If Shift=True Then Key$="E" Else Key$="e" EndIf EndIf If KeyHit(33)=True Then InputTyp$="$" If Shift=True Then Key$="F" Else Key$="f" EndIf EndIf If KeyHit(34)=True Then InputTyp$="$" If Shift=True Then Key$="G" Else Key$="g" EndIf EndIf If KeyHit(35)=True Then InputTyp$="$" If Shift=True Then Key$="H" Else Key$="h" EndIf EndIf If KeyHit(23)=True Then InputTyp$="$" If Shift=True Then Key$="I" Else Key$="i" EndIf EndIf If KeyHit(36)=True Then InputTyp$="$" If Shift=True Then Key$="J" Else Key$="j" EndIf EndIf If KeyHit(37)=True Then InputTyp$="$" If Shift=True Then Key$="K" Else Key$="k" EndIf EndIf If KeyHit(38)=True Then InputTyp$="$" If Shift=True Then Key$="L" Else Key$="l" EndIf EndIf If KeyHit(50)=True Then InputTyp$="$" If Shift=True Then Key$="M" Else Key$="m" EndIf EndIf If KeyHit(49)=True Then InputTyp$="$" If Shift=True Then Key$="N" Else Key$="n" EndIf EndIf If KeyHit(24)=True Then InputTyp$="$" If Shift=True Then Key$="O" Else Key$="o" EndIf EndIf If KeyHit(25)=True Then InputTyp$="$" If Shift=True Then Key$="P" Else Key$="p" EndIf EndIf If KeyHit(16)=True Then InputTyp$="$" If Shift=True Then Key$="Q" Else Key$="q" EndIf EndIf If KeyHit(19)=True Then InputTyp$="$" If Shift=True Then Key$="R" Else Key$="r" EndIf EndIf If KeyHit(31)=True Then InputTyp$="$" If Shift=True Then Key$="S" Else Key$="s" EndIf EndIf If KeyHit(20)=True Then InputTyp$="$" If Shift=True Then Key$="T" Else Key$="t" EndIf EndIf If KeyHit(22)=True Then InputTyp$="$" If Shift=True Then Key$="U" Else Key$="u" EndIf EndIf If KeyHit(47)=True Then InputTyp$="$" If Shift=True Then Key$="V" Else Key$="v" EndIf EndIf If KeyHit(17)=True Then InputTyp$="$" If Shift=True Then Key$="W" Else Key$="w" EndIf EndIf If KeyHit(45)=True Then InputTyp$="$" If Shift=True Then Key$="X" Else Key$="x" EndIf EndIf If KeyHit(44)=True Then InputTyp$="$" If Shift=True Then Key$="Y" Else Key$="y" EndIf EndIf If KeyHit(21)=True Then InputTyp$="$" If Shift=True Then Key$="Z" Else Key$="z" EndIf EndIf If KeyHit(40)=True Then InputTyp$="$" If Shift=True Then Key$="Ä" Else Key$="ä" EndIf EndIf If KeyHit(39)=True Then InputTyp$="$" If Shift=True Then Key$="Ö" Else Key$="ö" EndIf EndIf If KeyHit(26)=True Then InputTyp$="$" If Shift=True Then Key$="Ü" Else Key$="ü" EndIf EndIf If KeyHit(12)=True Then InputTyp$="$" Key$="ß" EndIf If KeyHit(57)=True Then InputTyp$="$" Key$=" " EndIf If Maus_Druck Then SetFont Schrift For Eingabe=Each EingabeTyp If MausX=>Eingabe\X Then If MausY=>Eingabe\Y Then If MausX=<Eingabe\X+StringWidth(Eingabe\Txt$) Then If MausY=<Eingabe\Y+FontHeight() Then Eingabe_Aktiv=Handle(Eingabe) DrawEingabe Return EndIf EndIf EndIf EndIf Next Eingabe_Aktiv=False EndIf If Tab=True Then Eingabe=Object.EingabeTyp(Eingabe_Aktiv) If Eingabe<>Null Then Tabnum=Eingabe\Tabnum EndIf MinTab=Tabnum MinH=0 MaxH=0 Eingabe=Null For Eingabe=Each EingabeTyp If Eingabe\Tabnum>Tabnum Then If MaxTab=0 Then MaxTab=Eingabe\Tabnum MaxH=Handle(Eingabe) Else If MaxTab>Eingabe\Tabnum Then MaxTab=Eingabe\Tabnum MaxH=Handle(Eingabe) EndIf EndIf Else If Eingabe\Tabnum<MinTab Then MinTab=Eingabe\Tabnum MinH=Handle(Eingabe) EndIf EndIf Next If Tabnum<MaxTab Then Eingabe_Aktiv=MaxH ElseIf Tabnum>MinTab Then Eingabe_Aktiv=MinH EndIf DrawEingabe Return EndIf For Eingabe=Each EingabeTyp Eingabe\Enter=False If Handle(Eingabe)=Eingabe_Aktiv Then If Len(Key$)>0 Then If Mid$(Eingabe\Maske$,Eingabe\Cursor,1)=InputTyp$ Then Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-1)+Key$+Mid$(Eingabe\Txt$,Eingabe\Cursor+1) MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next Else If InputTyp$="#" Then Select Mid$(Eingabe\Maske$,Eingabe\Cursor,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" MaskeZiffer$="" ZifferVorZeichen$="" If Eingabe\Cursor>1 Then For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "0","1","2","3","4","5","6","7","8","9" ZifferVorZeichen$=Mid$(Eingabe\Txt$,P,1)+ZifferVorZeichen$ MaskeZiffer$=Mid$(Eingabe\Maske$,P,1)+MaskeZiffer$ Default Exit End Select Next EndIf MaskeZiffer$=MaskeZiffer$+Mid$(Eingabe\Maske$,Eingabe\Cursor,1) ZifferNachZeichen$="" MaskeLang=Len(Eingabe\Maske$) If Eingabe\Cursor<MaskeLang Then For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "0","1","2","3","4","5","6","7","8","9" ZifferNachZeichen$=ZifferNachZeichen$+Mid$(Eingabe\Txt$,P,1) MaskeZiffer$=MaskeZiffer$+Mid$(Eingabe\Maske$,P,1) Default Exit End Select Next EndIf VerZahl$=ZifferVorZeichen$+Key$+ZifferNachZeichen$ If Int(VerZahl$)=<Int(MaskeZiffer$) Then Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-1)+Key$+Mid$(Eingabe\Txt$,Eingabe\Cursor+1) For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf End Select EndIf EndIf ElseIf Rechts=True And Strg=True Then MaskeLang=Len(Eingabe\Maske$) ZeichenGefunden=False For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P ZeichenGefunden=True Default Exit End Select Next If ZeichenGefunden=False Then MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf ElseIf Links=True And Strg=True Then If Eingabe\Cursor>1 Then MaskeLang=Len(Eingabe\Maske$) ZeichenGefunden=False For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P ZeichenGefunden=True Default Exit End Select Next If ZeichenGefunden=False Then For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf EndIf ElseIf Rechts=True Then MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor+1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next ElseIf Links=True Then If Eingabe\Cursor>1 Then MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf ElseIf Pos1=True Then MaskeLang=Len(Eingabe\Maske$) For P=1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next ElseIf Ende=True Then MaskeLang=Len(Eingabe\Maske$) For P=1 To MaskeLang Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P End Select Next ElseIf Entf=True Then Select Mid$(Eingabe\Maske$,Eingabe\Cursor,1) Case "#","0","1","2","3","4","5","6","7","8","9" Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-1)+"0"+Mid$(Eingabe\Txt$,Eingabe\Cursor+1) Case "$" Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-1)+" "+Mid$(Eingabe\Txt$,Eingabe\Cursor+1) End Select ElseIf Backspace=True Then If Eingabe\Cursor>1 Then Select Mid$(Eingabe\Maske$,Eingabe\Cursor-1,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Default MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P+1,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next End Select Select Mid$(Eingabe\Maske$,Eingabe\Cursor-1,1) Case "#","0","1","2","3","4","5","6","7","8","9" Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-2)+"0"+Mid$(Eingabe\Txt$,Eingabe\Cursor) If Eingabe\Cursor>1 Then MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf Case "$" Eingabe\Txt$=Left$(Eingabe\Txt$,Eingabe\Cursor-2)+" "+Mid$(Eingabe\Txt$,Eingabe\Cursor) If Eingabe\Cursor>1 Then MaskeLang=Len(Eingabe\Maske$) For P=Eingabe\Cursor-1 To 1 Step -1 Select Mid$(Eingabe\Maske$,P,1) Case "$","#","0","1","2","3","4","5","6","7","8","9" Eingabe\Cursor=P Exit End Select Next EndIf Default Eingabe\Cursor=Eingabe\Cursor+1 End Select EndIf ElseIf Enter=True Then Eingabe\Eingegeben$=Eingabe\Txt$ Eingabe\Enter=True EndIf EndIf Next DrawEingabe End Function Function DrawEingabe() SetFont Schrift Zeit=MilliSecs() MausX=MouseX() MausY=MouseY() For Eingabe=Each EingabeTyp Color 0,0,$33CC33 Rect Eingabe\X,Eingabe\Y,StringWidth(Eingabe\Txt$),FontHeight() If MausX=>Eingabe\X Then If MausY=>Eingabe\Y Then If MausX=<Eingabe\X+StringWidth(Eingabe\Txt$) Then If MausY=<Eingabe\Y+FontHeight() Then Color 0,255,255 Rect Eingabe\X,Eingabe\Y,StringWidth(Eingabe\Txt$),FontHeight(),0 Rect Eingabe\X+1,Eingabe\Y+1,StringWidth(Eingabe\Txt$)-2,FontHeight()-2,0 EndIf EndIf EndIf EndIf Textlang=Len(Eingabe\Txt$) For P=1 To Textlang Select Mid$(Eingabe\Maske$,P,1) Case "#","0","1","2","3","4","5","6","7","8","9" Color 0,0,$3333FF Case "$" Color 255,0,128 Default Color 255,255,0 End Select Text Eingabe\X+StringWidth(Left$(Eingabe\Txt$,P-1)),Eingabe\Y,Mid$(Eingabe\Txt$,P,1) Next If (Zeit/300) Mod 2 Then If Handle(Eingabe)=Eingabe_Aktiv Then If Eingabe\Cursor>0 Then Color 0,0,$FF9900 Rect Eingabe\X+StringWidth(Left$(Eingabe\Txt$,Eingabe\Cursor-1)),Eingabe\Y,2,FontHeight() EndIf EndIf EndIf Next End Function |
||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oha, wieso hast du dir so einen aufwand gemacht? Für jeden Buchstaben einen extra If ![]() MfG Blitzcoder |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
maximilian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Allerdings, sehr umständlich. Mit GetKey() ginge das 100x sogut. Die Idee ist allerdings ganz interessant. | ||
Variety is the spice of life. One day ignore people, next day annoy them. |
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
KeyDown hat da einen entscheidenen Vorteil, der aberhier gar nicht ausgenutzt wird. Wenn man eine Taste gedrückt hält, wird der Buchstabe ständig hinzugefügt. Bei den Buchstaben mag das wenig nutzen haben, aber für Backspace erwarte ich das bei einer guten Eingabemaske.
PS: 2 lange Codes sind unbequem für einen Thread. Kannst du vielleicht die erste Version herausnehmen, oder wenigstens verlinken? |
||
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax |
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also bei den Eingabemasken, die ich bisher geschrieben habe, ging es auch immer. Man kann ja für Backspace einen keydown nehmen.
MfG Blitzcoder |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da hat B+ ja echt einen Vorteil, da geht das dauertastendrücken mit GetKey() sogar, ist viel besser als das von B3D o_O | ||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur bei BlitzPlus hat man es nicht nötig, weil es da GUI Eingabefelder gibt ![]() |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, das ist wahr...
Kann der Entwickler nicht vll diese bessere GetKey() funktion und manch andere in B3D einbauen? Wäre doch viel besser ![]() Aber bei den GUI Feldern kann man keine Tasten abfragen, wie z.B. Pfeilauf/ab oder so ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group