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:

Mausabfrage funktioniert nicht wie gewünscht.

 
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
Sannaj



Anmeldungsdatum: 19.12.2010
Beiträge: 35

BeitragVerfasst am: 19.12.2010, 17:33    Titel: Mausabfrage funktioniert nicht wie gewünscht. Antworten mit Zitat

Ich möchte ein Objekt so gestalten das es bei einem Klick sein aussehen ändert. Und bei einem zweiten Klick wieder in den Ursprungszustand zurückkehrt. Damit die Funktion in einer Schleife nicht ununterbrochen die Zustände wechselt, solange man klickt, habe ich eine Sperrfunktion eingebaut, sodass der Zustand erst dann wieder wechselt, sobald man die Maustaste loslasst. Leider gibt die verwendete Funktion getmouse in Kurzen Abständen neben dem gepressten Button auch Button-nicht-gepresst zurück, sodass die Funktion nicht richtig funktioniert.

Vielleicht kann mir da jemand helfen. Ich benutzte fbc für Windows. Version 0.21.1 mit -lang fb (anderen gehen nicht weil ich auch OOP benutzte.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 19.12.2010, 18:44    Titel: Antworten mit Zitat

vielleicht hat deine maus einen wackelkontakt? Poste mal deinen source code damit andere leute das überprüfen können und dir sagen können wo dein fehler ist.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sannaj



Anmeldungsdatum: 19.12.2010
Beiträge: 35

BeitragVerfasst am: 19.12.2010, 18:53    Titel: Antworten mit Zitat

Das wird lang.
Hier der Sourcecode:

Code:

' sgGUI Teil 2: Check boxes
' Version 1.0
' von Sannaj 18.12.2010
'
' Eine Check box hat folgende Eigenschaften (properties):
'
'   Name     Type      Bedeutung
'   x        uinteger  x-Coordinate der linken oberen Labelecke.
'   y        uinteger  y-Coordinate der linken oberen Labelecke.
'   checked  byte      Gibt an ob die Check box abgeharkt ist,   (0 = Nein, -1 = Ja, andere Zuweisungen werden durch -1 ersetzt)
'   enabled  byte      Gibt an ob die Check box veränderbar ist, (0 = Nein, -1 = Ja, andere Zuweisungen werden durch -1 ersetzt)
'   visible  byte      Sichtbarkeitsstatus des Labels (0 = Unsichtbar, -1 = Sichtbar, andere Zuweisungen werden durch -1 ersetzt))
'
' Hinweise:
' Eine Check box wird mit "dim labelname as sgCheckBox" definiert.
' Nach der Initiialisierung liegt ist die auf (0/0) veränderbar, unsichtbar, unabgeharkt und mit der Beschriftung: "New Check box" versehen.
' Bitte zuerst lokalisieren und dann erst sichtbar machen.
' Bitte nicht über andere Objekte legen wenn beide sichtbar sind.

' Palette Setup
palette  6,  64,  64,  64 ' Dunkelgelb mit Schwarzgrau (hier dunkelgrau genannt) überschreiben
palette 11, 201, 201, 201 ' Hellcykan mit Weißgrau überschreiben

' Procedurdelarationen
declare sub sgCheckBoxDraw(text as string, xol as uinteger, yol as uinteger, isChecked as byte = 0, isEnabled as byte = -1)
declare sub sgCheckBoxUndraw(text as string, xol as uinteger, yol as uinteger)
dim shared sgCheckBoxClickActionAllreadyDone as byte = 0

' Declariere Check box UDT
type sgCheckBox
    declare property x(new_x as uinteger)
    declare property x() as uinteger
    declare property y(new_y as uinteger)
    declare property y() as uinteger
    declare property value(new_value as string)
    declare property value() as string
    declare property checked(new_value as byte)
    declare property checked() as byte
    declare property enabled(new_value as byte)
    declare property enabled() as byte
    declare property visible(new_value as byte)
    declare property visible() as byte
    declare sub clicked()
    declare sub setup(new_x as uinteger, new_y as uinteger, new_value as string, new_checked as byte = 0, new_visible as byte = -1)
   
   
    private:
    locx as uinteger
    locy as uinteger
    locvalue as string = "New Check box"
    locchecked as byte
    locenabled as byte = -1
    locvis as byte
end type

' Testsektor
screen 12
palette  6,  64,  64,  64 ' Dunkelgelb mit Schwarzgrau (hier dunkelgrau genannt) überschreiben
palette 11, 201, 201, 201 ' Hellcykan mit Weißgrau überschreiben
paint (1, 1), 7 'Hellgrauer Hintergrund
dim testbox as sgCheckBox

testbox.setup(56, 67, "Click here!")
dim as integer mouseButtons, mouseX, mouseY
do
    do
        sleep 1                                             ' Prozessor entlasten
        getmouse(mouseX, mouseY ,, mouseButtons)            ' Prüft ob die Maus geklickt worden ist
        if inkey = "q" then
            end                                             ' q terminiert das Programm
        end if
    loop until (mouseButtons and 1) and mouseX <> -1        ' Solange warten bis die Maus im Fenster geklickt wird
    draw string (1, 1), "Klick erkannt"
    draw string (1, 10), "Unklick da.", 7
    testbox.clicked()
    do
        getmouse(mouseX, mouseY , mouseButtons)             ' Prüft ob die Maus geklickt worden ist
        sleep 1                                             ' Prozessor entlasten
        if inkey = "q" then
            end                                             ' q terminiert das Programm
        end if
    loop until (not (mouseButtons and 1)) and mouseX <> -1  ' Solange warten bis die Maus im Fenster nicht mehr.
    draw string (1, 1), "Klick erkannt", 7
    draw string (1, 10), "Unklick da."
   
loop

/'testbox.x = 65
testbox.y = testbox.x
testbox.visible = 1
sleep
testbox.checked = 1
testbox.value = "Hallo Welt" 
sleep'/

property sgCheckBox.x(new_x as uinteger)
    if this.locvis <> 0 then                                 ' Nur bei Sichtbarkeit Neuzeichnen
        sgCheckBoxUndraw(this.locvalue, this.locx, this.locy)' Altes Object löschen.
        sgcheckBoxDraw(this.locvalue, new_x, this.locy, _
        this.locchecked, this.locenabled)                    ' Neues Object zeichnen.
    end if
    this.locx = new_x                                        ' x aktualisieren
end property

property sgCheckBox.x() as uinteger                          ' Auf Anfrage kann x auch ausgegeben werden
    return this.locx
end property

property sgCheckBox.y(new_y as uinteger)
    if this.locvis <> 0 then                                 ' Nur bei Sichtbarkeit Neuzeichnen
        sgCheckBoxUndraw(this.locvalue, this.locx, this.locy)' Altes Object löschen.
        sgcheckBoxDraw(this.locvalue, this.locx, new_y, _
        this.locchecked, this.locenabled)                    ' Neues Object zeichnen.
    end if
    this.locy = new_y                                        ' y aktualisieren
end property

property sgCheckBox.y() as uinteger                          ' Auf Anfrage kann y auch ausgegeben werden
    return this.locy
end property

property sgCheckBox.value(new_value as string)
    if this.locvis <> 0 then                                 ' Nur bei Sichtbarkeit Neuzeichnen
        sgCheckBoxUndraw(this.locvalue, this.locx, this.locy)' Altes Object löschen.
        sgcheckBoxDraw(new_value, this.locx, this.locy, _
        this.locchecked, this.locenabled)                    ' Neues Object zeichnen.
    end if
    this.locvalue = new_value                                ' Beschriftung aktualisieren
end property

property sgCheckBox.value() as string                        ' Auf Anfrage kann die Beschriftung auch ausgegeben werden
    return this.locvalue
end property

property sgCheckBox.checked(new_value as byte)
    if this.locvis <> 0 then                                 ' Nur bei Sichtbarkeit Neuzeichnen
        sgcheckBoxDraw(this.locvalue, this.locx, this.locy, _
        new_value, this.locenabled)                          ' Neues Object zeichnen.
    end if
    if new_value = 0 then
        this.locchecked = 0                                  ' y aktualisieren
    else
        this.locchecked = -1
    end if                         
end property

property sgCheckBox.checked() as byte                        ' Auf Anfrage kann der Abhackungsstatus auch ausgegeben werden
    return this.locchecked
end property

property sgCheckBox.enabled(new_value as byte)
    if this.locvis <> 0 then                                 ' Nur bei Sichtbarkeit Neuzeichnen
        sgcheckBoxDraw(this.locvalue, this.locx, this.locy, _
        this.locchecked, new_value)                          ' Neues Object zeichnen.
    end if
    if new_value = 0 then
        this.locenabled = 0                                  ' y aktualisieren
    else
        this.locenabled = -1
    end if
end property

property sgCheckBox.enabled() as byte                        ' Auf Anfrage kann die Änderbarkeit auch ausgegeben werden
    return this.locenabled
end property

property sgCheckBox.visible(new_value as byte)
    if new_value = 0 then                                    ' Nur bei Sichtbarkeit Neuzeichnen
        sgCheckBoxUndraw(this.locvalue, this.locx, this.locy)' Altes Object löschen.
        this.locvis = 0                                      ' Sichtbarkeit aktualisieren (unsichtbar = false = 0)
    else
        sgcheckBoxDraw(this.locvalue, this.locx, this.locy, _
        this.locchecked, this.locenabled)                    ' Neues Object zeichnen.
        this.locvis = -1                                     ' Sichtbarkeit aktualisieren (sichtbar = true = -1)
    end if
end property

property sgCheckBox.visible() as byte                        ' Auf Anfrage kann die Sichtbarkeit auch ausgegeben werden
    return this.locvis
end property

sub sgCheckBox.clicked()
    dim as integer mouseX, mouseY, mouseButtons
    if GetMouse(mouseX, mouseY, , mouseButtons) <> 0 and this.locenabled <> 0 then       ' Mauseigenschaften einlesen und prüfen ob ein Fehler passiert ist (Rückgabe <> 0)

    else
        if (mouseButtons and 1) then                                                     ' Prüfen ob die Linke Maustaste gedrückt worden ist.
            if mouseX > this.locx and mouseX < this.locx + 20 + len(this.locvalue)*8 and _
            mouseY > this.locy and mouseY < this.locy + 16 and this.locenabled <> 0 then ' Kontroliert ob die Maus auf der Check box und ob die aktion nicht schon ausgeführt worden ist.
                if this.locchecked = 0 then
                    this.checked = -1
                else
                    this.checked = 0
                end if
                draw string (1,100), "Änderung sollte gesehen." & time
            end if
        end if
    end if
end sub

sub sgCheckBox.setup(new_x as uinteger, new_y as uinteger, new_value as string, new_checked as byte = 0, new_visible as byte = -1)
    this.x = new_x
    this.y = new_y
    this.value = new_value
    this.checked = new_checked
    this.visible = new_visible
end sub

sub sgCheckBoxDraw(text as string, xol as uinteger, yol as uinteger, isChecked as byte = 0, isEnabled as byte = -1)
    'line (xol, yol)-(xol + 10,yol + 10)
    'Kästchen zeichnen
    dim as integer schwarz, dunkelgrau, mittelgrau, hellgrau, weiss, weissgrau
    ' Farben zuordnen
    schwarz = 0
    dunkelgrau = 6
    mittelgrau = 8
    hellgrau = 7
    weiss = 15
    weissgrau = 11
    ' Rahmen
    line (xol,yol + 2)-(xol + 11,yol + 2), dunkelgrau
    line (xol,yol + 2)-(xol    ,yol + 12), dunkelgrau
    pset (xol    ,yol + 12), mittelgrau
    pset (xol + 10,yol + 2), mittelgrau
    line ((xol + 1), yol + 13)-(xol + 11, yol + 13), hellgrau
    line (xol + 11, (yol + 3))-(xol + 11, yol + 13), hellgrau
    ' Button ausmalen und Text eintragen.
    if isEnabled <> 0 then
        line (xol + 1, yol + 2 + 1)-(xol + 10, yol + 2 + 10), weiss, bf
    else
        line (xol + 1, yol + 2 + 1)-(xol + 10, yol + 2 + 10), weissgrau, bf
    end if
    ' Hacken rein, wenn gewünscht.
    if isChecked <> 0 then
        if isEnabled <> 0 then              ' Steuerbare Harken in schwarz
            pset (xol + 3, yol + 8), schwarz
            pset (xol + 3, yol + 9), schwarz
            pset (xol + 2, yol + 9), schwarz
            line (xol + 3, yol + 10)-(xol + 8, yol + 5), schwarz
            line (xol + 4, yol + 10)-(xol + 8, yol + 6), schwarz
            line (xol + 4, yol + 11)-(xol + 9, yol + 6), schwarz
        else                                ' Andere Harken in mittelgrau.
            pset (xol + 3, yol + 8), mittelgrau
            pset (xol + 3, yol + 9), mittelgrau
            pset (xol + 2, yol + 9), mittelgrau
            line (xol + 3, yol + 10)-(xol + 8, yol + 5), mittelgrau
            line (xol + 4, yol + 10)-(xol + 8, yol + 6), mittelgrau
            line (xol + 4, yol + 11)-(xol + 9, yol + 6), mittelgrau
        end if
    end if
    draw string (xol + 20, yol), text, schwarz
end sub

sub sgCheckBoxUndraw(text as string, xol as uinteger, yol as uinteger)
    dim as integer hellgrau
    ' Farben zuordnen
    hellgrau = 7
    ' Rahmen
    line (xol,yol + 2)-(xol + 11, yol + 13), hellgrau ' Kästchen überzeichnen
    draw string (xol + 20, yol), text, hellgrau       ' Text überschreiben
end sub


Ok, das wars. Schau mal ob du das Problem ausmachen kannst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 19.12.2010, 19:24    Titel: Antworten mit Zitat

Das Problem liegt bei NOT (mouseButtons AND 1). Wenn die linke Maustaste gedrückt ist, ist mouseButtons AND 1 gleich 1, und NOT 1 ist -2, also wahr.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sannaj



Anmeldungsdatum: 19.12.2010
Beiträge: 35

BeitragVerfasst am: 19.12.2010, 19:33    Titel: Antworten mit Zitat

Danke für deine Hilfe.

Wie kann ich das umschreiben damits funktionerert?


Zuletzt bearbeitet von Sannaj am 19.12.2010, 19:39, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 19.12.2010, 19:36    Titel: Antworten mit Zitat

Habe die Hauptschleife und sgCheckBox.clicked() veraendert.
Ich habe es so gemacht, das man die Buttonstellung vom vorigen Fram mit der jetzigen vergleicht. Wenn sie sich unterscheiden wurde die Maustaste losgelassen/gedrueckt.

Code:

' sgGUI Teil 2: Check boxes
' Version 1.0
' von Sannaj 18.12.2010
'
' Eine Check box hat folgende Eigenschaften (properties):
'
'   Name     Type      Bedeutung
'   x        uinteger  x-Coordinate der linken oberen Labelecke.
'   y        uinteger  y-Coordinate der linken oberen Labelecke.
'   checked  byte      Gibt an ob die Check box abgeharkt ist,   (0 = Nein, -1 = Ja, andere Zuweisungen werden durch -1 ersetzt)
'   enabled  byte      Gibt an ob die Check box veränderbar ist, (0 = Nein, -1 = Ja, andere Zuweisungen werden durch -1 ersetzt)
'   visible  byte      Sichtbarkeitsstatus des Labels (0 = Unsichtbar, -1 = Sichtbar, andere Zuweisungen werden durch -1 ersetzt))
'
' Hinweise:
' Eine Check box wird mit "dim labelname as sgCheckBox" definiert.
' Nach der Initiialisierung liegt ist die auf (0/0) veränderbar, unsichtbar, unabgeharkt und mit der Beschriftung: "New Check box" versehen.
' Bitte zuerst lokalisieren und dann erst sichtbar machen.
' Bitte nicht über andere Objekte legen wenn beide sichtbar sind.

' Palette Setup
palette  6,  64,  64,  64 ' Dunkelgelb mit Schwarzgrau (hier dunkelgrau genannt) überschreiben
palette 11, 201, 201, 201 ' Hellcykan mit Weißgrau überschreiben

Type TMouse
   X As Integer
   Y As Integer
   B As Integer
   BA As Integer
   W As Integer
End Type

' Procedurdelarationen
declare sub sgCheckBoxDraw(text as string, xol as uinteger, yol as uinteger, isChecked as byte = 0, isEnabled as byte = -1)
declare sub sgCheckBoxUndraw(text as string, xol as uinteger, yol as uinteger)
dim shared sgCheckBoxClickActionAllreadyDone as byte = 0
Dim Shared Mouse As TMouse

' Declariere Check box UDT
type sgCheckBox
    declare property x(new_x as uinteger)
    declare property x() as uinteger
    declare property y(new_y as uinteger)
    declare property y() as uinteger
    declare property value(new_value as string)
    declare property value() as string
    declare property checked(new_value as byte)
    declare property checked() as byte
    declare property enabled(new_value as byte)
    declare property enabled() as byte
    declare property visible(new_value as byte)
    declare property visible() as byte
    declare sub clicked()
    declare sub setup(new_x as uinteger, new_y as uinteger, new_value as string, new_checked as byte = 0, new_visible as byte = -1)
   
   
    private:
    locx as uinteger
    locy as uinteger
    locvalue as string = "New Check box"
    locchecked as byte
    locenabled as byte = -1
    locvis as byte
end type

' Testsektor
screen 12
palette  6,  64,  64,  64 ' Dunkelgelb mit Schwarzgrau (hier dunkelgrau genannt) überschreiben
palette 11, 201, 201, 201 ' Hellcykan mit Weißgrau überschreiben
paint (1, 1), 7 'Hellgrauer Hintergrund
dim testbox as sgCheckBox

testbox.setup(56, 67, "Click here!")

do                                       
   GetMouse(mouse.X, mouse.Y ,mouse.W , mouse.B)            ' Prüft ob die Maus geklickt worden ist
   If inkey = "q" then
      End                                             ' q terminiert das Programm
   End If
   If mouse.B <> mouse.BA And mouse.B = 1 Then
      testbox.clicked()
   EndIf
   mouse.BA = mouse.B
Loop

/'testbox.x = 65
testbox.y = testbox.x
testbox.visible = 1
sleep
testbox.checked = 1
testbox.value = "Hallo Welt" 
sleep'/

property sgCheckBox.x(new_x as uinteger)
    if this.locvis <> 0 then                                 ' Nur bei Sichtbarkeit Neuzeichnen
        sgCheckBoxUndraw(this.locvalue, this.locx, this.locy)' Altes Object löschen.
        sgcheckBoxDraw(this.locvalue, new_x, this.locy, _
        this.locchecked, this.locenabled)                    ' Neues Object zeichnen.
    end if
    this.locx = new_x                                        ' x aktualisieren
end property

property sgCheckBox.x() as uinteger                          ' Auf Anfrage kann x auch ausgegeben werden
    return this.locx
end property

property sgCheckBox.y(new_y as uinteger)
    if this.locvis <> 0 then                                 ' Nur bei Sichtbarkeit Neuzeichnen
        sgCheckBoxUndraw(this.locvalue, this.locx, this.locy)' Altes Object löschen.
        sgcheckBoxDraw(this.locvalue, this.locx, new_y, _
        this.locchecked, this.locenabled)                    ' Neues Object zeichnen.
    end if
    this.locy = new_y                                        ' y aktualisieren
end property

property sgCheckBox.y() as uinteger                          ' Auf Anfrage kann y auch ausgegeben werden
    return this.locy
end property

property sgCheckBox.value(new_value as string)
    if this.locvis <> 0 then                                 ' Nur bei Sichtbarkeit Neuzeichnen
        sgCheckBoxUndraw(this.locvalue, this.locx, this.locy)' Altes Object löschen.
        sgcheckBoxDraw(new_value, this.locx, this.locy, _
        this.locchecked, this.locenabled)                    ' Neues Object zeichnen.
    end if
    this.locvalue = new_value                                ' Beschriftung aktualisieren
end property

property sgCheckBox.value() as string                        ' Auf Anfrage kann die Beschriftung auch ausgegeben werden
    return this.locvalue
end property

property sgCheckBox.checked(new_value as byte)
    if this.locvis <> 0 then                                 ' Nur bei Sichtbarkeit Neuzeichnen
        sgcheckBoxDraw(this.locvalue, this.locx, this.locy, _
        new_value, this.locenabled)                          ' Neues Object zeichnen.
    end if
    if new_value = 0 then
        this.locchecked = 0                                  ' y aktualisieren
    else
        this.locchecked = -1
    end if                         
end property

property sgCheckBox.checked() as byte                        ' Auf Anfrage kann der Abhackungsstatus auch ausgegeben werden
    return this.locchecked
end property

property sgCheckBox.enabled(new_value as byte)
    if this.locvis <> 0 then                                 ' Nur bei Sichtbarkeit Neuzeichnen
        sgcheckBoxDraw(this.locvalue, this.locx, this.locy, _
        this.locchecked, new_value)                          ' Neues Object zeichnen.
    end if
    if new_value = 0 then
        this.locenabled = 0                                  ' y aktualisieren
    else
        this.locenabled = -1
    end if
end property

property sgCheckBox.enabled() as byte                        ' Auf Anfrage kann die Änderbarkeit auch ausgegeben werden
    return this.locenabled
end property

property sgCheckBox.visible(new_value as byte)
    if new_value = 0 then                                    ' Nur bei Sichtbarkeit Neuzeichnen
        sgCheckBoxUndraw(this.locvalue, this.locx, this.locy)' Altes Object löschen.
        this.locvis = 0                                      ' Sichtbarkeit aktualisieren (unsichtbar = false = 0)
    else
        sgcheckBoxDraw(this.locvalue, this.locx, this.locy, _
        this.locchecked, this.locenabled)                    ' Neues Object zeichnen.
        this.locvis = -1                                     ' Sichtbarkeit aktualisieren (sichtbar = true = -1)
    end if
end property

property sgCheckBox.visible() as byte                        ' Auf Anfrage kann die Sichtbarkeit auch ausgegeben werden
    return this.locvis
end property

sub sgCheckBox.clicked()
   if (mouse.B And 1) then                                                     ' Prüfen ob die Linke Maustaste gedrückt worden ist.
      If mouse.X > this.locx and mouse.X < this.locx + 20 + len(this.locvalue)*8 and _
         mouse.Y > this.locy and mouse.Y < this.locy + 16 and this.locenabled <> 0 then ' Kontroliert ob die Maus auf der Check box und ob die aktion nicht schon ausgeführt worden ist.
         If this.locchecked = 0 then
            this.checked = -1
         Else
            this.checked = 0
         End if
         Draw string (1,100), "Änderung sollte gesehen." & time
      End if
   End If
End sub

sub sgCheckBox.setup(new_x as uinteger, new_y as uinteger, new_value as string, new_checked as byte = 0, new_visible as byte = -1)
    this.x = new_x
    this.y = new_y
    this.value = new_value
    this.checked = new_checked
    this.visible = new_visible
end sub

sub sgCheckBoxDraw(text as string, xol as uinteger, yol as uinteger, isChecked as byte = 0, isEnabled as byte = -1)
    'line (xol, yol)-(xol + 10,yol + 10)
    'Kästchen zeichnen
    dim as integer schwarz, dunkelgrau, mittelgrau, hellgrau, weiss, weissgrau
    ' Farben zuordnen
    schwarz = 0
    dunkelgrau = 6
    mittelgrau = 8
    hellgrau = 7
    weiss = 15
    weissgrau = 11
    ' Rahmen
    line (xol,yol + 2)-(xol + 11,yol + 2), dunkelgrau
    line (xol,yol + 2)-(xol    ,yol + 12), dunkelgrau
    pset (xol    ,yol + 12), mittelgrau
    pset (xol + 10,yol + 2), mittelgrau
    line ((xol + 1), yol + 13)-(xol + 11, yol + 13), hellgrau
    line (xol + 11, (yol + 3))-(xol + 11, yol + 13), hellgrau
    ' Button ausmalen und Text eintragen.
    if isEnabled <> 0 then
        line (xol + 1, yol + 2 + 1)-(xol + 10, yol + 2 + 10), weiss, bf
    else
        line (xol + 1, yol + 2 + 1)-(xol + 10, yol + 2 + 10), weissgrau, bf
    end if
    ' Hacken rein, wenn gewünscht.
    if isChecked <> 0 then
        if isEnabled <> 0 then              ' Steuerbare Harken in schwarz
            pset (xol + 3, yol + 8), schwarz
            pset (xol + 3, yol + 9), schwarz
            pset (xol + 2, yol + 9), schwarz
            line (xol + 3, yol + 10)-(xol + 8, yol + 5), schwarz
            line (xol + 4, yol + 10)-(xol + 8, yol + 6), schwarz
            line (xol + 4, yol + 11)-(xol + 9, yol + 6), schwarz
        else                                ' Andere Harken in mittelgrau.
            pset (xol + 3, yol + 8), mittelgrau
            pset (xol + 3, yol + 9), mittelgrau
            pset (xol + 2, yol + 9), mittelgrau
            line (xol + 3, yol + 10)-(xol + 8, yol + 5), mittelgrau
            line (xol + 4, yol + 10)-(xol + 8, yol + 6), mittelgrau
            line (xol + 4, yol + 11)-(xol + 9, yol + 6), mittelgrau
        end if
    end if
    draw string (xol + 20, yol), text, schwarz
end sub

sub sgCheckBoxUndraw(text as string, xol as uinteger, yol as uinteger)
    dim as integer hellgrau
    ' Farben zuordnen
    hellgrau = 7
    ' Rahmen
    line (xol,yol + 2)-(xol + 11, yol + 13), hellgrau ' Kästchen überzeichnen
    draw string (xol + 20, yol), text, hellgrau       ' Text überschreiben
end sub


Bei mir functioniert es
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 19.12.2010, 19:41    Titel: Antworten mit Zitat

Ansonsten kannst du ein
Code:
    loop until ((mouseButtons and 1) = 0) and mouseX <> -1  ' Solange warten bis die Maus im Fenster nicht mehr.

verwenden. Obwohl die Überprüfung von mouseX <> -1 wahrscheinlich nicht nötig ist - denn dann wäre ja auch mouseButtons = -1 und mouseButtons AND 1 = 1

edit: irgendwas stimmt noch nicht, aber ich muss noch suchen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.


Zuletzt bearbeitet von nemored am 19.12.2010, 19:45, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sannaj



Anmeldungsdatum: 19.12.2010
Beiträge: 35

BeitragVerfasst am: 19.12.2010, 19:44    Titel: Antworten mit Zitat

Danke.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 19.12.2010, 19:49    Titel: Antworten mit Zitat

zweiten Fehler gefunden - beim zweiten GETMOUSE fehlt ein zweites Komma vor dem mouseButtons.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
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