Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Eigene Input-Routine

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 15.01.2011, 10:50    Titel: Eigene Input-Routine Antworten mit Zitat

Hallo

Ich brauche für meine OpenWIZ-GUI eine Textbox, also habe ich folgende Sub erstellt:
Code:
Sub AddTextBox(x As Integer,y As Integer,w As Integer,ByVal id As Integer,ByVal num As Integer)
   Line (wx(num)+5+x,wy(num)+26+y)-(wx(num)+5+x+w,wy(num)+42+y),15,BF
   Line (wx(num)+5+x,wy(num)+26+y)-(wx(num)+5+x+w,wy(num)+42+y),15,B
   Line (wx(num)+5+x,wy(num)+26+y)-(wx(num)+4+x+w,wy(num)+26+y),8
   Line (wx(num)+5+x,wy(num)+26+y)-(wx(num)+5+x,wy(num)+41+y),8
   Line (wx(num)+6+x,wy(num)+27+y)-(wx(num)+4+x+w,wy(num)+41+y),7,B
   Line (wx(num)+6+x,wy(num)+27+y)-(wx(num)+6+x+w-3,wy(num)+27+y),0
   Line (wx(num)+6+x,wy(num)+27+y)-(wx(num)+6+x,wy(num)+40+y),0
   If (mx>wx(num)+5+x And mx<wx(num)+5+x+w) And (my>wy(num)+26+y And my<wy(num)+42+y) And buttons=1 Then
      inum=1
   End If
   If inum=1 Then
      Color 0
      'Select Case key2
      '   Case 32 To 255
            key2=Getkey
            texttbox=texttbox+Chr(key2)
            textz2=Len(texttbox)*8
            Draw String(wx(num)+8+x+textz,wy(num)+28+y),texttbox
      '   Case 13
      '      Draw String(wx(num)+8+x,wy(num)+28+y),text
      '   End Select
   End If
End Sub

Kurze Erklärung:
-TextBox wird gezeichnet
-Es wird geprüft, ob die Maus in die TextBox geklickt hat
-Es folgt die Eingabe(die nicht funktioniert)

Wenn ich in die TextBox klicke, dann stoppt das Programm und hängt sich auf. Das liegt wahrscheinlich an Getkey, aber ich weiß auch nicht, wie ich es anders machen soll ...
Hat jemand vielleicht eine Idee?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 15.01.2011, 13:02    Titel: Antworten mit Zitat

Zitat:
Syntax: GETKEY
Typ: Funktion
Kategorie: Eingabe

Wartet mit der Programmausführung, bis eine Taste gedrückt wird. GETKEY ist also ein Ersatz für SLEEP. Im Gegensatz zu SLEEP allerdings löscht GETKEY den Tastaturpuffer, nachdem eine Taste gedrückt wurde.


probier mal mit:
Code:
key2=asc(Inkey)

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 15.01.2011, 13:07    Titel: Antworten mit Zitat

Jetzt läuft zwar das Programm weiter, aber ich kann trotzdem nichts eingeben. verwundert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 15.01.2011, 14:19    Titel: Antworten mit Zitat

koennte daran liegen das er IMMER alles hinzufuegt ob es nun was hinzuzufuegen gibt oder nicht, sprich, er macht auch ohne eingabe immer ein chr(0) hinzu, da gehört wohl noch die eine oder andere afrage rein
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 15.01.2011, 15:34    Titel: Antworten mit Zitat

Hier ist ein Beispiel, auf Anfrage von Eternal_pain:
Code:
Screenres 500,300,8
Declare Sub AddTextBox(x As Integer,y As Integer,w As Integer,ByVal id As Integer)
Dim Shared As Integer inum,textz,mx,my,buttons,key2
Dim Shared As String texttbox

Do
   Getmouse mx,my,,buttons
   key2=Asc(Inkey)
   Screenlock
      Cls
      AddTextBox(100,100,200,1)
   Screenunlock
   Sleep 1
Loop Until Inkey=Chr(27)
End


Sub AddTextBox(x As Integer,y As Integer,w As Integer,ByVal id As Integer)
   Line (5+x,26+y)-(5+x+w,42+y),15,BF
   Line (5+x,26+y)-(5+x+w,42+y),15,B
   Line (5+x,26+y)-(4+x+w,26+y),8
   Line (5+x,26+y)-(5+x,41+y),8
   Line (6+x,27+y)-(4+x+w,41+y),7,B
   Line (6+x,27+y)-(6+x+w-3,27+y),0
   Line (6+x,27+y)-(6+x,40+y),0
   If (mx>+5+x And mx<+5+x+w) And (my>26+y And my<42+y) And buttons=1 Then
      inum=1
   End If
   If inum=1 Then
      Color 0
      texttbox=texttbox+Chr(key2)
      textz=Len(texttbox)*8
      Draw String(8+x+textz,28+y),texttbox
   End If
End Sub
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 15.01.2011, 20:10    Titel: Antworten mit Zitat

Man sollte im program immer nur ein Inkey haben, da inkey den puffer der tasten zurucksetzt.

Code:

Screenres 500,300,8
Declare Sub AddTextBox(x As Integer,y As Integer,w As Integer,ByVal id As Integer)
Dim Shared As Integer inum,textz,mx,my,buttons,key2
Dim Shared As String texttbox
Do
   Getmouse mx,my,,buttons
   key2 = Asc(InKey)
   Screenlock
      Cls
      AddTextBox(100,100,200,1)
   Screenunlock
   Sleep 1
Loop Until key2=27
End


Sub AddTextBox(x As Integer,y As Integer,w As Integer,ByVal id As Integer)
   Line (5+x,26+y)-(5+x+w,42+y),15,BF
   Line (5+x,26+y)-(5+x+w,42+y),15,B
   Line (5+x,26+y)-(4+x+w,26+y),8
   Line (5+x,26+y)-(5+x,41+y),8
   Line (6+x,27+y)-(4+x+w,41+y),7,B
   Line (6+x,27+y)-(6+x+w-3,27+y),0
   Line (6+x,27+y)-(6+x,40+y),0
   If (mx>+5+x And mx<+5+x+w) And (my>26+y And my<42+y) And buttons=1 Then
      inum=1
   End If
   If inum=1 And key2<>0 Then
      Color 0
      texttbox=texttbox+Chr(key2)
      textz=Len(texttbox)*8
   End If
   Draw String(8+x,28+y),texttbox
End Sub


sollte funktionieren
anderst ist die stelle loop until key2 = 27 und der string wird nur erweitert wenn auch key2 ungleich 0 ist. Gezeichnet wird der sting aber immer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 15.01.2011, 20:41    Titel: Antworten mit Zitat

Ohja. Das funktioniert, ich danke euch allen für die Hilfe. happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz