 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 25.10.2007, 09:45 Titel: Cusorsteuerung mit Pfeiltasten |
|
|
Hallo,
ich bin mit meinem Problem aus dem anderen Thread noch nicht weitergekommen.
Ich habe ein Menüsystem mit Print aufgebaut und mit Color 11,9 eingefärbt. Nun möchte mit dem Cursor die einzelnen Menüs und Items ansteuern. Das sieht so aus:
Code: |
DIM SHARED X As Integer: DIM SHARED Y As Integer: 'Koordinaten
DIM Taste As String: ' Variablen für Tastenabfrage definieren
X = 2: Y = 2: 'Anfangsposition links oben in der Ecke
DO
LOCATE X, Y, 1
DO
Taste = INKEY
LOOP WHILE Taste = ""
SELECT CASE Taste
CASE CHR(255) + "K"
IF Y > 1 THEN Y = Y - 1: 'nach links
CASE CHR(255) + "M"
IF Y < 80 THEN Y = Y + 1: 'nach rechts
CASE CHR(255) + "H"
IF X > 1 THEN X = X - 1: 'nach oben
CASE CHR(255) + "P"
IF X < 23 THEN X = X + 1: 'nach unten
CASE CHR(13) 'Auswahl mit Return
IF X = 2 AND Y > 1 THEN
'_____________________________________________________________________________
'______________ Menüauswahl ____________
'_____________________________________________________________________________
SELECT CASE Menuname (RL, X ,Y ,Wort ,11, 9)
CASE "Datei"
LOCATE 20, 20
PRINT Wort
Dateimen (3, 2, 17, 20,Wort, Rahmen3, 4, 11)
CASE "Bearbeiten"
LOCATE 20, 20
PRINT Wort
Bearbmen (3, 9, 17, 28, Wort, Rahmen3, 4, 11)
CASE "Ansicht"
LOCATE 20, 20
PRINT Wort
Ansichtmen (3, 22, 13, 44,Wort, Rahmen3, 4, 11)
CASE "Optionen"
LOCATE 20, 20
PRINT Wort
Optionmen(3, 30, 11, 47, Wort, Rahmen3, 4, 11)
CASE "Hilfe"
LOCATE 20, 20
PRINT Wort
Hilfemen(3, 40, 13, 59, Wort, Rahmen3, 4, 11)
END SELECT
END IF
CASE ELSE
END SELECT
LOOP UNTIL Taste = CHR(27) 'Schleifendurchlauf bis ESC
|
Der Cursor reagiert schon irgendwie auf die Pfeiltasten, nur leider kann ich ihn nicht sehen. Das "Locate X, Y, 1" scheint nicht richtig zu funktionieren. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 25.10.2007, 09:58 Titel: Graphical User Interface fuer die Konsole |
|
|
Hi,
schau dir mal dies an:
http://www.freebasic-portal.de/index.php?s=download&id=55 _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 25.10.2007, 10:28 Titel: |
|
|
Danke, aber das ist nicht so ganz das, was ich meinte. Ich meinte, man soll auch die Bewegung des Cursors sehen, nicht nur die Textbalken.
Lothar Schirm verwendet auch Locate, um den Cursor zu positionieren. Nur bei ihm ist er sichtbar, obwohl er überall den Parameter 0 angegeben hat, bei mir ist er nicht sichtbar, obwohl ich dort 1 angegeben habe (hat in QBasic auch geklappt)...
Dazu muß ich sagen: Screen 17. (Komischerweise, obwohl ich für Console kompiliere, erscheint immer ein zweites Consolen-Fenster mit Cursor, aber der reagiert auch nicht) |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 25.10.2007, 14:54 Titel: |
|
|
Nur im textorientierten (Console) - Fenster hast du einen sichtbaren Cursor.
Im Grafikfenster (Screen 1 - 20) musst du selbst für einen Cursor sorgen.
Z.B.: Code: | screen 17,8
color 15,0
cls
DIM SHARED X AS INTEGER: DIM SHARED Y AS INTEGER: 'Koordinaten
DIM Taste AS STRING: ' Variablen für Tastenabfrage definieren
X = 2: Y = 2: 'Anfangsposition links oben in der Ecke
locate 2,2
?"Punkt 1" 'nur zum testen
locate 3,2
?"Punkt 2"
DO
LOCATE X, Y,1
Line ((Y-1)*8,X*16)-(Y*8,X*16),15
DO
Taste = INKEY
LOOP WHILE Taste = ""
Line ((Y-1)*8,X*16)-(Y*8,X*16),0
SELECT CASE Taste
... |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 25.10.2007, 15:07 Titel: |
|
|
AAAha! Danke für die Info. TTheopretisch funktioniert es schon mal- außer, daß der Cursor eine schwarze Linie hinterläßt.
Leider ist der Text-Screen so langsam. Ich muß mir mal überlegen, was mir lieber ist.
Trotzdem vielen Dank für die Aufklärung. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 25.10.2007, 22:36 Titel: |
|
|
wenn du in der zweiten LINE - Anweisung deine Hintergrundfarbe einsetzt (statt ..,0 ) wird es keine schwarze Linie mehr geben.  _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 26.10.2007, 09:09 Titel: |
|
|
Volta, Du bist ein Schatz!
Danke, so ist das richtig!  |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 26.10.2007, 11:34 Titel: |
|
|
Ok, ok ..
probier mal den LuxusCursor
Code: | Screen 17, 8
Color 11, 9
Cls
Dim As Any Ptr cursor = imagecreate( 8, 16, 4)
Dim Shared As Integer X=2, Y=2 'Koordinaten Anfangsposition links oben in der Ecke
Dim Taste As String 'Variablen für Tastenabfrage definieren
Do
Locate X, Y
Put ((Y-1)*8,(X-1)*16), cursor, xor
Do
Taste = Inkey
Loop While Taste = ""
Put ((Y-1)*8,(X-1)*16), cursor, xor
.. |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|
|
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.
|
|