Textfeld (Mehrzeilig)

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Medabots1992

Betreff: Textfeld (Mehrzeilig)

BeitragSa, Mai 07, 2005 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe hier mal ein Textfeld mehrzeilig erstellt.
Sieht icht supper aus kann man aber verwenden.
BlitzBasic: [AUSKLAPPEN]

;Funtion Anfang
Function Textfeld(positionx, positiony, zeichen, inputx, inputy, zeile)
;Ab hier nichts verändern, weil sonst das Script nicht korrekt funktioniert
inputx = positionx + 5
inputy = positiony + 5
laenge = zeichen * 9
If zeile > 0 Then
Line positionx, positiony, positiony+laenge, positiony
EndIf
zeilen = zeile * hoehe + 15
For y = 1 To zeilen
Line positionx, positiony+y, positiony+laenge, positiony+y
Next
;For z = 0 To 10
;Line positionx+laenge+20, zeilen+positiony+10-z-10, positionx+laenge+0, zeilen+positiony-10
;Line positionx+laenge+20, zeilen+positiony-10+z, positionx+laenge+40, zeilen+positiony-10
;Line positionx+laenge+20, zeilen+positiony+10-z-10-zeilen+10, positionx+laenge+0, zeilen+positiony-zeilen+10
;Line positionx+laenge+20, zeilen+positiony-10+z-zeilen+10, positionx+laenge+40, zeilen+positiony-zeilen+10
;Next
Local x
Dim Felder$(zeile)
For f = 0 To zeile
Locate positionx, positiony+f*hoehe
Color 0,0,0
Felder$(x) = Input()
Next
;Funtion Ende
End Function

Ich hoffe der Code hat euch gefallen. Ist halt nur eine Funktion. Die manchmal Helfen kann. Wer es verbessern kann, kann das bitte tun.
Ich habe es mit den Einfachsten Mitteln gemacht. Falls cls code vorkommt muss die ganze Function von vorne laufen.
Also viel Spass noch mit dem Code.

Sir Dan

BeitragSa, Mai 07, 2005 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
dim in einer function?
Ich wusste gar nicht dass das geht?
Das geht doch oder? Very Happy
(\_/)
(O.o)
(> <) This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Mai 07, 2005 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Sicher geht das, aber nur wenn dieses Array schon existiert!BlitzBasic: [AUSKLAPPEN]
Dim A(0)
Test()
For t= 0 To 10 Print a(t) Next
WaitKey

Function test()
Dim a(10)
For t= 0 To 10 a(t) = t Next
End Function
[BB2D | BB3D | BB+]
 

Medabots1992

BeitragSa, Mai 07, 2005 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Das muss in der Function sein weil sonst weis das Programm doch nicht wie viele Zeilen es sind. Ich habe es schon getestet. Ich habe ein Problem und das ist der Zeilenumbruch. Könnte in nemand noch dazufügen und hier posten währe sehr nett.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Mai 07, 2005 22:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Zeilenumbruch geht nicht mit BlitzBasic: [AUSKLAPPEN]
Felder$(x) = Input()

das kannste nur mit einer eigenen Input Function realisieren!

Übrigens wäre es sinnvoll ein kleines Beispiel posten, wie die Function benutzt werden kann!
[BB2D | BB3D | BB+]
 

Medabots1992

BeitragSa, Mai 07, 2005 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ganz einfach wie man die Finktion einbindet:
BlitzBasic: [AUSKLAPPEN]
;graficmodus
Graphics 800,600,16,2
Dim Felder$(0)

Das ist der Anfang



BlitzBasic: [AUSKLAPPEN]

Textfeld(200, 200, 18, 10) ;Das erste ist die Position auf der X-Achse z.B. 200 das zwei ist die Position auf der Y achse, das dritte ist wie viele Zeichen es hat(Ohne Umbruch). Das vierte ist die Angezeigt zeilen anzahl


;Hier ist das die Funktion der Rest muss nicht erklärt werden hier soll lieber nix verändert werden, weil sonst kann es passieren das es dann nicht klappt
;Funtion Anfang
Function Textfeld(positionx, positiony, zeichen, zeile)
;Ab hier nichts verändern, weil sonst das Script nicht korrekt funktioniert
inputx = positionx + 5
inputy = positiony + 5
laenge = zeichen * 9
hoehe = 15
If zeile > 0 Then
Line positionx, positiony, positiony+laenge, positiony
EndIf
zeilen = zeile * hoehe + 15
For y = 1 To zeilen
Line positionx, positiony+y, positiony+laenge, positiony+y
Next
;For z = 0 To 10
;Line positionx+laenge+20, zeilen+positiony+10-z-10, positionx+laenge+0, zeilen+positiony-10
;Line positionx+laenge+20, zeilen+positiony-10+z, positionx+laenge+40, zeilen+positiony-10
;Line positionx+laenge+20, zeilen+positiony+10-z-10-zeilen+10, positionx+laenge+0, zeilen+positiony-zeilen+10
;Line positionx+laenge+20, zeilen+positiony-10+z-zeilen+10, positionx+laenge+40, zeilen+positiony-zeilen+10
;Next
Local x
Dim Felder$(zeile)
For f = 0 To zeile
Locate positionx, positiony+f*hoehe
Color 0,0,0
Felder$(x) = Input()
Next
;Funtion Ende
End Function

;Hab noch paar Fehler ausgebessert



Und hier nochmal alles zusammen wie es auf jedenfall funktioniert.
BlitzBasic: [AUSKLAPPEN]

;graficmodus
Graphics 800,600,16,2
Dim Felder$(0)
Textfeld(200, 200, 18, 10)
;Funtion Anfang
Function Textfeld(positionx, positiony, zeichen, zeile)
;Ab hier nichts verändern, weil sonst das Script nicht korrekt funktioniert
inputx = positionx + 5
inputy = positiony + 5
laenge = zeichen * 9
hoehe = 15
If zeile > 0 Then
Line positionx, positiony, positiony+laenge, positiony
EndIf
zeilen = zeile * hoehe + 15
For y = 1 To zeilen
Line positionx, positiony+y, positiony+laenge, positiony+y
Next
;For z = 0 To 10
;Line positionx+laenge+20, zeilen+positiony+10-z-10, positionx+laenge+0, zeilen+positiony-10
;Line positionx+laenge+20, zeilen+positiony-10+z, positionx+laenge+40, zeilen+positiony-10
;Line positionx+laenge+20, zeilen+positiony+10-z-10-zeilen+10, positionx+laenge+0, zeilen+positiony-zeilen+10
;Line positionx+laenge+20, zeilen+positiony-10+z-zeilen+10, positionx+laenge+40, zeilen+positiony-zeilen+10
;Next
Local x
Dim Felder$(zeile)
For f = 0 To zeile
Locate positionx, positiony+f*hoehe
Color 0,0,0
Felder$(x) = Input()
Next
;Funtion Ende
End Function
 

Medabots1992

BeitragSa, Mai 07, 2005 23:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch eine Frage wie macht mal dei Getcodes oder Ascii codes wieder in Zeichen. Dann könnte ich die Input function nochmal selber machen. Weil 32 ist ja leertaste dann könnte ich den zeilenumbruch einfügen die Detailierung wie ein echtes Textfeld werde ich nocht machen. Mit vielle kleine Punkte die ich dann mit Scripte anklickbar mache. Mal sehen was raus kommt. Weil mit GUI das zu machen braucht man BlitzPlus und das Finde ich nicht wie man es in Blitz2D erstellt deshalb mache ich die Function selber.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Mai 07, 2005 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
So kommste an den Buchstaben ranBlitzBasic: [AUSKLAPPEN]
Buchstabe$ =  Chr(32)


Hier mal eine mini Input Routine die leicht ausbaubar ist!
BlitzBasic: [AUSKLAPPEN]
Graphics 800 ,600,16,2
Global InputText$ = \"\"
SetBuffer BackBuffer ()

While Not KeyDown (1);#####
ergebnis = InputNew (0,100)
If ergebnis = 1 Then
; eingabe beendet
; InputText$ beinhaltet die Eingabe
End If
Flip
Cls
Wend;########
End

Function InputNew (x,y)
Eingabe = GetKey()
Select eingabe
Case 0 ;keine eingabe
;nichts machen, nur verhindern das dem text etwas hinzugefügt wird
Case 8 ;Rücktaste
; letztes Zeichen löschen
If Len (InputText$) Then InputText$ = Left (InputText$, Len(InputText$) - 1)
Case 13 ;Entertaste
Return True ; enter = eingabe zu ende
Default ; alle anderen Buchstaben
InputText$ = InputText$ + Chr (eingabe)
End Select
Text x,y,InputText$
End Function


Sind aber auch viele _Routinen im Code Archiv
[BB2D | BB3D | BB+]
 

Medabots1992

BeitragSo, Mai 08, 2005 9:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie soll ich die Input function einbinden das es funktioniert.
Weil Zeilenumbruch kann ich nicht machen weil ich das mit dem Enter nicht kann kann.
Ich habe es es jetzt zum rum Spiele so.
Aber irgenwas geht da nicht. Er speichert nur die Einzelnen zeichen.
BlitzBasic: [AUSKLAPPEN]

Graphics 800 ,600,16,2
Global f = 0
Dim Felder$(10)
SetBuffer BackBuffer ()
While Not KeyDown (1);#####
eingabe = GetKey()
If eingabe = 13 Then If f < 10 Then f = f + 1
If eingabe = 13 Then eingabe = 0
If eingabe > 0 Then
Felder$(f) = Felder$(f) + eingabe
If eingabe = 8 Then If Len (Felder$(f)) Then Felder$(f) = Left (Felder$(f), Len(Felder$(f)) - 1)
EndIf
For fe = 0 To 10
Text 0,20*fe, Felder$(fe)
Next
If ergebnis = 1 Then
; eingabe beendet
; InputText$ beinhaltet die Eingabe
End If
Flip
Cls
Wend;########
End

Gibt es auch so ein Funktion wie bei PHP die Explode heißt auch in BB?
Also ich habe paar fehler gefunden aber das mit der Rücktaste funktioniert nicht.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group