  | 
					
						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 | 
	 
	
		Sannaj
 
 
  Anmeldungsdatum: 19.12.2010 Beiträge: 35
 
  | 
		
			
				 Verfasst am: 19.12.2010, 16:33    Titel: Mausabfrage funktioniert nicht wie gewünscht. | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		MisterD
 
  
  Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
  | 
		
			
				 Verfasst am: 19.12.2010, 17:44    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		Sannaj
 
 
  Anmeldungsdatum: 19.12.2010 Beiträge: 35
 
  | 
		
			
				 Verfasst am: 19.12.2010, 17:53    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		nemored
 
  
  Anmeldungsdatum: 22.02.2007 Beiträge: 4713 Wohnort: ~/
  | 
		
			
				 Verfasst am: 19.12.2010, 18:24    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		Sannaj
 
 
  Anmeldungsdatum: 19.12.2010 Beiträge: 35
 
  | 
		
			
				 Verfasst am: 19.12.2010, 18:33    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Danke für deine Hilfe.
 
 
Wie kann ich das umschreiben damits funktionerert?
  Zuletzt bearbeitet von Sannaj am 19.12.2010, 18:39, insgesamt einmal bearbeitet | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		XOR
 
 
  Anmeldungsdatum: 23.07.2010 Beiträge: 161
 
  | 
		
			
				 Verfasst am: 19.12.2010, 18:36    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		nemored
 
  
  Anmeldungsdatum: 22.02.2007 Beiträge: 4713 Wohnort: ~/
  | 
		
			
				 Verfasst am: 19.12.2010, 18:41    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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, 18:45, insgesamt einmal bearbeitet | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Sannaj
 
 
  Anmeldungsdatum: 19.12.2010 Beiträge: 35
 
  | 
		
			
				 Verfasst am: 19.12.2010, 18:44    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				| Danke. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		nemored
 
  
  Anmeldungsdatum: 22.02.2007 Beiträge: 4713 Wohnort: ~/
  | 
		
			
				 Verfasst am: 19.12.2010, 18:49    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				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 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
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.
  | 
   
 
     |