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:

Cusorsteuerung mit Pfeiltasten

 
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
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 25.10.2007, 09:45    Titel: Cusorsteuerung mit Pfeiltasten Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.10.2007, 09:58    Titel: Graphical User Interface fuer die Konsole Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 25.10.2007, 10:28    Titel: Antworten mit Zitat

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)... verwundert

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.10.2007, 14:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 25.10.2007, 15:07    Titel: Antworten mit Zitat

AAAha! Danke für die Info. lächeln 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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.10.2007, 22:36    Titel: Antworten mit Zitat

grinsen wenn du in der zweiten LINE - Anweisung deine Hintergrundfarbe einsetzt (statt ..,0 ) wird es keine schwarze Linie mehr geben. zwinkern
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 26.10.2007, 09:09    Titel: Antworten mit Zitat

Volta, Du bist ein Schatz! vor Freude klatschen

Danke, so ist das richtig! Daumen rauf!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 26.10.2007, 11:34    Titel: Antworten mit Zitat

verlegen Ok, ok ..
probier mal den LuxusCursor cool
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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