Beste Inputroutine
Übersicht

![]() |
ValnarBetreff: Beste Inputroutine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich hab mal die Forensuche nach inputroutinen abgesucht und dort eine ganze stange von Routinen gefunden. Da ich keine Lust hab jede einzelne zu Testen (Was schon seine Zeit dauern würde), wollte ich mal erfragen was an sich die beste Inputroutine ist. Also was es können sollte: * Alle Keys abfragen * Mit Pfeiltasten und Maus eine bestimmte stelle anklicken * POS1 sollte ganz nach vorne gehen * ENDE sollte ganz nach hinten gehen * Bei Gedrückter Taste nach kurzer Zeit mehrfach "wahrnehmen" Optional währe noch schön: * mehrere Inputfelder * Eingabe optional auf bestimmte sachen beschränken (Sprich nur Zahlen/Buchstaben und eventuell mehr) * Mehrzeiliger Text Habt ihr sowas auf Lager? Welche Routine benutzt ihr standartmäßig?# Welche ist zu empfehlen? Grüße und danke im Vorraus Valnar |
||
![]() |
Blackside |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube auch nicht das andere Forenmember Lust haben, alle Inputs
durchzugehen, und viele werden sich die Inputs auch selbst programmieren. Ich würde an deiner Stelle auch erstmal probieren selbst ein zu programmieren, denn so hast du auch alle deine Feutures, es wird schwer eine zu finden sein die genau das alles hat wie du geschrieben hast... Ist übrigens auch eine schöne Übung zu Types und Textverarbeitung ![]() |
||
Hier sollte eigentlich eine Signatur stehen! |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Selbstgemacht ist immer am besten.
Programmier dir einfach eine Input-Routine, die alles kann, was du brauchst ![]() Oder überfliege dir die Codes der Inputroutinen, da müsste man ja etwa rauslesen können, was die alles machen. |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Valnar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Ich glaube auch nicht das andere Forenmember Lust haben, alle Inputs
durchzugehen, und viele werden sich die Inputs auch selbst programmieren. Ich würde an deiner Stelle auch erstmal probieren selbst ein zu programmieren, denn so hast du auch alle deine Feutures, es wird schwer eine zu finden sein die genau das alles hat wie du geschrieben hast... Ist übrigens auch eine schöne Übung zu Types und Textverarbeitung Wink Ja das ist richitg, aber es gibt sicherlich einige Leute die Ihre Inputroutine als beste ansehen. Selber schrieben hab ich schon versucht, so ganz hab ich das nicht gecheckt^^ Ausserdem denke ich das man das Rad ja nicht immer neu erfinden muss ![]() |
||
![]() |
Blackside |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn man sich ein Editfield selbst programmiert, erfindet man es nicht neu,
hier sind ein paar Befehle die dir helfen könnten ![]() GetKey ![]() Type ![]() Hier ein kleines Beispiel(ohne blinkenden Cursor etc...) einfach ins kästchen klicken und tippen ![]() erweitern kannst du es ja selber mit all deinen Features... Code: [AUSKLAPPEN] Graphics 800,600,32,2
SetBuffer BackBuffer() Global ef.editfield CreateEdit(100,100,100) While Not KeyDown(1) For ef.editfield = Each editfield Rect ef\x,ef\y,ef\width,25,0 Text ef\x,ef\y+6,ef\txt$ If MouseX() >= ef\x And MouseX() <= ef\x+ef\width And MouseY() >= ef\y And MouseY() <= ef\y+25 Then If MouseDown(1) Then ef\active = 1:FlushKeys() Else If MouseDown(1) Then ef\active = 0 End If If ef\active = 1 Then Local gh = GetKey() If gh >= 32 Then ef\txt$ = ef\txt$+Chr(gh) End If If KeyHit(14) Then ef\txt$ = Mid(ef\txt,1,Len(ef\txt$)-1) End If Next Flip Cls Wend Function CreateEdit(x,y,width) ef.editfield = New editfield ef\x = x ef\y = y ef\width = width End Function Type editfield Field x,y,width,txt$ Field active End Type |
||
Hier sollte eigentlich eine Signatur stehen! |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hier mal ein Beispiel von mir - komplett selbst gemacht.
Man kann mit dem Attribut "Mode" einstellen, bei welchem "Fenster" die Textbox gemalt werden soll wie z.B. so: Schritt 1: Anmeldung (man gibt PW und Name ein), dann klickt man auf einen Button, der die Globale "Mode" ändert, so ist Schritt 2 aktuell: z.B. eMail schreiben (Textboxen für Empfänger, Betreff und so werden nun statt denen für den Login gezeichnet). Dann kann man welche auf die Eingabe von IPs und Ziffern beschränken, den Nummernblock benutzen, Backspace drücken und gedrückt lassen und durch den Tabulator zu den anderen wechseln. Zudem gibt es noch einen blinkenden Cursor ![]() Ist zwar nicht die schnellste, aber Draw3D baue ich bald ein ![]() Code: [AUSKLAPPEN] Global MX, MY, Downtime, Mouse, Key, Cursor, Zeit#, Mode = StartScreen, T2.Textbox
Timer = CreateTimer(60) Const StartScreen = 1 Type Textbox Field X, Y Field W, H Field Txt$ Field Enabled% Field Focus% Field Mode Field NurNummern% Field Font Field NurIP% End Type Global TxtVorname.Textbox = New Textbox TxtVorname\X = 160 TxtVorname\Y = 140 TxtVorname\W = 150 TxtVorname\H = 20 TxtVorname\Enabled% = 1 TxtVorname\Font = LoadFont("Arial", 20, 1) TxtVorname\Mode = StartScreen Global TxtName.Textbox = New Textbox TxtName\X = 160 TxtName\Y = 100 TxtName\W = 150 TxtName\H = 20 TxtName\Txt$ = "Beispiel" TxtName\Enabled% = 1 TxtName\Font = LoadFont("Arial", 20, 1) TxtName\Mode = StartScreen TxtName\Focus = 1 Global TxtAlter.Textbox = New Textbox TxtAlter\X = 160 TxtAlter\Y = 180 TxtAlter\W = 150 TxtAlter\H = 20 TxtAlter\Enabled% = 1 TxtAlter\Font = LoadFont("Arial", 20, 1) TxtAlter\Mode = StartScreen TxtAlter\NurNummern = 1 ;NUR ZIFFERN Global TxtNix.Textbox = New Textbox TxtNix\X = 160 TxtNix\Y = 230 TxtNix\W = 150 TxtNix\H = 20 TxtNix\Enabled% = 0 ;DEAKTIVERT TxtNix\Font = LoadFont("Arial", 20, 1) TxtNix\Mode = StartScreen While Not KeyHit(1) Cls ClsColor 69,139,116 MX = MouseX() MY = MouseY() Mouse = MouseHit(1) Key = KeyHit(1) Zeit# = MilliSecs() Textboxen() If Mode = StartScreen Then Color 60,60,60 Text 80,100,"Name:" Text 80,140,"Vorname:" Text 80,180,"Alter:" Text 80,230,"Nix:" ;Fortsetzung zb so: ;If Button "Weiter" gedrückt, Mode = AuswahlScreen End If ;If Mode = ..... ;Beispiel für das Auslesen der Textfelder AppTitle "Hallo " + TxtVorname\Txt + " " + TxtName\Txt + "!" WaitTimer Timer Flip 0 Wend End Function UnFocusTextBoxen() For t.Textbox = Each Textbox T\Focus% = 0 Next End Function Function Textboxen() If downtime < 6 Then downtime = downtime + 1 Else downtime = 1 End If For T.Textbox = Each Textbox If T\Mode = Mode Then Color 0,0,0 Rect T\X-2, T\Y-2, T\W, T\H, 1 If T\Enabled Then Over = RectsOverlap(T\X, T\Y, T\W, T\H, MX, MY, 1,1) If Over = 1 Then Color 255,255,255 If Over = 0 Then Color 200,200,200 If T\Focus% = 1 Then Color 190,255,190 Rect T\X, T\Y, T\W, T\H, 1 If Over And MouseDown(1) Then UnFocusTextBoxen() T\Focus% = 1 End If Color 0,0,0 SetFont T\Font Text T\X+2,T\Y, T\Txt ;Textfeld beschriften If T\Focus% Then Local Key = GetKey() If Key = 13 Then UnFocusTextBoxen() ;Focus bei Enter entfernen If Zeit - Cursor > 500 Then ;blinkender Cursor If Zeit - Cursor > 1000 Then Cursor = Zeit Text StringWidth(T\Txt)+T\X, T\Y-2, "|" End If If T\NurIP = 0 Then If T\NurNummern = 0 Then If Key > 31 And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + Chr$(Key) ;alle Zeichen Else If Key > 47 And Key < 58 And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + Chr$(Key) ;nur Zahlen End If Else If Key > 45 And Key < 58 And StringWidth(T\Txt)+10 < T\W And Key <> 44 Then T\Txt = T\Txt + Chr$(Key) ;nur IP-Adressen End If ;Nummernblock If T\NurIP = 0 And T\NurNummern = 0 Then If KeyHit(83) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "," If KeyHit(74) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "-" If KeyHit(78) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "+" End If If KeyHit(71) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "7" If KeyHit(72) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "8" If KeyHit(73) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "9" If KeyHit(75) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "4" If KeyHit(76) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "5" If KeyHit(77) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "6" If KeyHit(79) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "1" If KeyHit(80) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "2" If KeyHit(81) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "3" If KeyHit(82) And StringWidth(T\Txt)+10 < T\W Then T\Txt = T\Txt + "0" If KeyDown(14) And DownTime = 6 And T\Txt <> "" Then T\Txt = Left$(T\Txt, Len(T\Txt)-1) ;Backspace If Key = 9 Then ;Tabben If T = Last Textbox Then T2.Textbox = First Textbox Else T2.Textbox = After T.Textbox End If If T\Mode = T2\Mode Then UnFocusTextBoxen() T2\Focus% = 1 End If End If End If Else Color 150,150,150 Rect T\X, T\Y, T\W, T\H, 1 End If End If Next End Function PS: Bei deaktivierten Objekten, funktioniert das Tabben noch nicht so recht.... |
||
-~= real coders just code in binary =~- |
- Zuletzt bearbeitet von BadDeath am Di, Aug 12, 2008 9:20, insgesamt einmal bearbeitet
![]() |
Valnar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmmm die untere gefällt mir ![]() Aner ich kapier das immernoch nicht. Was muss in die Funktion, was ist genau 1 Inputfeld und was muss ich verändern und was stehen bleiben (Bei den Types)? Und was heissen die Variablen |
||
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eigentlich recht einfach: Man erstellt eine Neue, indem man ein neuen Type ertstellt:
Code: [AUSKLAPPEN] Global TxtName.Textbox = New Textbox ;neue Textbox erstellen TxtName\X = 160 ; X-Position TxtName\Y = 100 ; Y-Position TxtName\W = 150 ; Breite TxtName\H = 20 ; Höhe TxtName\Txt$ = "Beispiel" ; Optional: vordefinierter Text, der drin steht TxtName\Enabled% = 1 ; Deaktiveren und Aktivieren der Textbox TxtName\Font = LoadFont("Arial", 20, 1) ; Schriftart TxtName\Mode = StartScreen ;der Screen-Index, siehe letzten Beitrag von mir TxtName\Focus = 1 ; Focus der Textbox, also ob sie ausgewählt ist, man Eingaben machen kann und der Cursor blinkt - pro Mode kann nur eine aktiv sein - logisch, oder? TxtName\NurNummern% ; Nur Ziffern von 0-9 erlaubt TxtName\NurIP% ; Ziffern 0-9 und Punkte erlaubt Und um den Text auszulesen: Eingabe$ = TxtName\Txt$ |
||
-~= real coders just code in binary =~- |
![]() |
EPS |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://www.east-power-soft.de/...s_inputbox | ||
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier
Man kann sich öfter als zweimal im Leben halb tot lachen. |
![]() |
Valnar |
![]() Antworten mit Zitat ![]() |
---|---|---|
@EPS ja deine seite hab ich die Nacht entdeckt, ich werd mir im verlaufe des Tages das durchnehmen....
Sind auch sehr interessante, andere Sachen drauf. Ich werde mir mal die 3 genauer zugute führen, evtl können ja andere auch ihre erfahrung posten und dann krönen wir einen KING OF INPUTROUTINE *gg* |
||
![]() |
Blackside |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meine Input-Routuine hab ich in 5 min. gecoded, also kannst du meine gleich
von der "Wahl" ausschließen, ich wollte dir nur Tipps geben, denn was bringt dir ein vorgefertigter Code, wenn du ihn nicht verstehst? Deswegen ist es wahrscheinlich immer am besten, selbst etwas zu schreiben, also würde ich dir raten, dich durch Tutorials über Types zu arbeiten und probieren, selbst einen zu schreiben(zur hilfe kannst du ja auch meinen oder die anderen Codes verwenden ![]() MFG Blackside |
||
Hier sollte eigentlich eine Signatur stehen! |
![]() |
Valnar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mommentan versteh ich ihn noch nicht, aber was nicht ist kann noch werden.
Und ich bin der meinung "lieber einen guter Fremder Script als ein schlechter eigener" |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group