| Quelltexte/ Codesnippets |  |  |  |  |  |  |  |  RudiB.
 | | Hab mal wieder was gebastelt....einen TIMER-BUTTON einfach mal probieren, ich hoffe es ist selbsterklärend...
 
 Window 100,100-800,500
WindowTitle "Es wird die Zeit gemessen , wie lange der Timer-Button gedrückt bleibt..."
Declare zeit&,sek&,sekundaer_sek&,stop&,Edit&,text$,z&,button&,Button_dummy&,button_ende&,button_Anleitung&,edit_status&,Font3%
FONT3%=@Create("FONT","MS SANS SERIF",25,10,1,0,0)
button&=create("Button",%Hwnd,"Timer-Button",150,200,120,80)
edit_status&=Control("EDIT","",$540100C1,50,150,650,30,%Hwnd,0,%hinstance,$0)
setfont edit_status&,font3%
edit&=Control("EDIT","",$540100C1,30,50,60,18,button&,0,%hinstance,$0)
settext edit&,"0.00 ms"
enablewindow edit&,0
button_dummy& = CONTROL("Button","Dummy Buttton  CLS ", $54012000,300,200,80,80, %HWnd,1, %HINSTANCE)
button_ende&=create("Button",%Hwnd,"Ende",500,200,80,80)
button_Anleitung&=create("Button",%Hwnd,"Anleitung",400,200,80,80)
Stop&=0
CLS
Set("Decimals",2)
zeit&=&gettickcount
While 1'Endlosschleife! (Button-Abfrage)
    If Getfocus(button_dummy&)
        CLS:setfocus(%Hwnd)
        Settext edit_status&,"Dummy-Button wurde gerade geklickt >>> CLS"
    ElseIf getfocus(button_Anleitung&)
        Anleitung
    ElseIf getfocus(button_ende&)
        End
    Else
        GetStatus_TimerButton
    endif
EndWhile
End
Proc GetStatus_TimerButton
    z&=Sendmessage(Button&,$00F2,0,0)'Statuswert des Buttons (Button Message : bm_GetState)
    If z&>600'Linke Maustaste gedrückt
        inc stop&
        sek&=((&gettickcount-zeit&)/10)-sekundaer_sek&
        Settext edit_status&,"Linke Maustaste auf Timer-Button ist gerade gedrückt"
    Else
        sekundaer_sek&=((&gettickcount-zeit&)/10)
    EndIf
    If (stop&>=1) And (z&>600)
        settext edit&,str$(sek&/100)+" ms"
    EndIf
    z&=Sendmessage(Button&,$00F2,0,0)'Statuswert Timer-Button neu auslesen
    If (z& <600) And (sek&>0)
        settext edit&,str$(sek&/100)+" ms"
        Text$="Timer-Button wurde "+str$(sek&/100)+" Sekunden lang gedrückt ......    "
        Settext edit_status&,Text$
        setfocus(%Hwnd)
        settext edit&,str$(sek&/100)+" ms"
        '-------------------------------------------------------------------------------------------
        '------In Abhängigkeit vom Timer-Wert wird hier eine Aktion ausgeführt ---------------------
        If sek&/100>1.5
            Rectangle 200,350 - 550,400
        Endif
        If (sek&/100>1.0) And (sek&/100<1.5)
            Ellipse 200,350 - 550,400
        Endif
        If (sek&/100>.5) And (sek&/100<1)
            Line 200,350 - 550,400
        Endif
        If sek&/100<.5
            Cls
        Endif
        '-------------------------------------------------------------------------------------------
        sek&=0
    EndIf
    z&=Sendmessage(Button&,$00F2,0,0)'Statuswert Timer-Button neu auslesen
    If (z&>0) And (stop&=0)
        sek&=0
        stop&=0
        sekundaer_sek&=0
        zeit&=&gettickcount
    EndIf
    If (%mousepressed=2) And (z&>0)'Rechter Mausklick auf Timer-Button (Timerwert wird auf 0.00 gesetzt)
        settext edit&,"0.00 ms"
        Settext edit_status&,"Rechte Maustaste auf Timer-Button wurde gerade geklickt"
    EndIf
EndProc
Proc Anleitung
    Locate 1,1
    Print "Linke Maustaste auf Timer-Button gedrückt halten...Zeit wird in ms im Timer-Button-Edit angezeigt"
    Print "In Abhängigkeit vom Timerwert wird eine Aktion ausgeführt...Nur zu Demo-Zwecken."
    Print "mehr als 1,5 sek -------- es wird ein Rechteck gezeichnet"
    Print "zwischen 1,0 - 1,5 sek -- es wird eine Ellipse gezeichnet"
    Print "zwischen 0,5 - 1,0 sek -- es wird eine Linie gezeichnet"
    Print "weniger als 0,5 sek ----- Es wird ein CLS ausgeführt."
    Print "Rechte Maustaste auf Timer-Button klicken setzt den Timerwert auf 0.00 ms zurück..."
    Print "Dummy-Button macht einfach nur ein CLS...."
    Print "Ende-Button muss ich nicht erklären, oder ???"
    setfocus(%Hwnd)
EndProc
 | 
 |  |  |  |  | | Xprofan X4Rudolf Beske / München
 
 Hardware: NB Intel I9 - 16GByte RAM
 | 28.05.2021  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  p.specht
 
 
  | | "In Abhängigkeit vom Timer-Wert wird hier eine Aktion ausgeführt..." - coole Idee! 
 Mehrfachausnutzung von Buttons bedarf aber einer klaren Trennung zwischen KURZEM und LANGEM DRUCK. Bei meinem chinesischen Würfelradio-bluetooth-mp3player klicke ich regelmäßig falsch. Damit fängt der 1-Stunden-Vortrag auf mp3 jedesmal von vorne an, statt in Pause zu gehen. Also: Eindeutige Zeiten sind wichtig!
 | 
 |  |  |  |  | | XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 28.05.2021  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  RudiB.
 | | Und noch eine weiter Variante des Timer-Buttons ....hier kommt Farbe ins Spiel. | 
 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  RudiB.
 | | 
 "In Abhängigkeit vom Timer-Wert wird hier eine Aktion ausgeführt..." - coole Idee! 
 Nun ja....soooo weit habe ich jetzt noch nicht gedacht. Im Moment bastele ich eher nur an der Optik. Der Rest kommt dann....
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Georg
 Teles
 | | Nabend,
 coole Idee !
 für etwas CPU Entlastung eventuell WaitInput und Timer hinzufügen wäre gut
 
 Window 100,100-800,500
WindowTitle "Es wird die Zeit gemessen , wie lange der Timer-Button gedrückt bleibt..."
Declare zeit&,sek&,sekundaer_sek&,stop&,Edit&,text$,z&,button&,Button_dummy&,button_ende&,button_Anleitung&,edit_status&,Font3%
'Declare a&.b&,c&,d&,e&
Def LoadImage(6) !"USER32","LoadImageA"
FONT3%=@Create("FONT","MS SANS SERIF",25,10,1,0,0)
button&=control("Button","Timer-Button",$54010400,150,220,120,40,%hwnd,1,%HINSTANCE)
edit_status&=Control("EDIT","",$540100C1,50,150,650,30,%Hwnd,0,%hinstance,$0)
setfont edit_status&,font3%
edit&=Control("EDIT","",$540100C1,30,50,60,18,button&,0,%hinstance,$0)
showwindow(edit&,0)
Var a&=  Control("STATIC", "Test", $5400110E, 10, 22, 10, 10, Button&,0, %hInstance)
Var b&=  Control("STATIC", "Test", $5400110E, 25, 22, 10, 10, Button&,0, %hInstance)
Var c&=  Control("STATIC", "Test", $5400110E, 40, 22, 10, 10, Button&,0, %hInstance)
Var d&=  Control("STATIC", "Test", $5400110E, 55, 22, 10, 10, Button&,0, %hInstance)
Var e&=  Control("STATIC", "Test", $5400110E, 70, 22, 10, 10, Button&,0, %hInstance)
Var f&=  Control("STATIC", "Test", $5400110E, 85, 22, 10, 10, Button&,0, %hInstance)
Var g&=  Control("STATIC", "Test", $5400110E, 100, 22, 10, 10, Button&,0, %hInstance)
'Var e&=  Control("STATIC", "Test", $5400110E, 10, 68, 10, 10, Button&,0, %hInstance)
settext edit&,"0.00 ms"
enablewindow edit&,0
button_dummy& = CONTROL("Button","Dummy Buttton  CLS ", $54012000,300,200,80,80, %HWnd,1, %HINSTANCE)
button_ende&=create("Button",%Hwnd,"Ende",500,200,80,80)
button_Anleitung&=create("Button",%Hwnd,"Anleitung",400,200,80,80)
Stop&=0
CLS
Set("Decimals",2)
zeit&=&gettickcount
SetTimer 10
While 1'Endlosschleife! (Button-Abfrage)
    WaitInput
    If %wmTimer
        If Getfocus(button_dummy&)
            CLS:setfocus(%Hwnd)
            Settext edit_status&,"Dummy-Button wurde gerade geklickt >>> CLS"
        ElseIf getfocus(button_Anleitung&)
            Anleitung
        ElseIf getfocus(button_ende&)
            End
        Else
            GetStatus_TimerButton
        endif
    EndIf
EndWhile
KillTimer
End
Proc GetStatus_TimerButton
    z&=Sendmessage(Button&,$00F2,0,0)'Statuswert des Buttons (Button Message : bm_GetState)
    If z&>600'Linke Maustaste gedrückt
        inc stop&
        sek&=((&gettickcount-zeit&)/10)-sekundaer_sek&
        Settext edit_status&,"Linke Maustaste auf Timer-Button ist gerade gedrückt"
        If sek&>25
            FAERBESTATIC a&,10,10,RGB(0,255,0)
        EndIf
        If sek&>50
            FAERBESTATIC b&,10,10,RGB(127,255,0)
        EndIf
        If sek&>75
            FAERBESTATIC c&,10,10,RGB(255,255,0)
        EndIf
        If sek&>100
            FAERBESTATIC d&,10,10,RGB(255,193,0)
        EndIf
        If sek&>125
            FAERBESTATIC e&,10,10,RGB(255,165,0)
        EndIf
        If sek&>150
            FAERBESTATIC f&,10,10,RGB(255,69,0)
        EndIf
        If sek&>175
            FAERBESTATIC g&,10,10,RGB(255,0,0)
        EndIf
        Setfocus(Button&)
    Else
        sekundaer_sek&=((&gettickcount-zeit&)/10)
    EndIf
    If (stop&>=1) And (z&>600)
        settext edit&,str$(sek&/100)+" ms"
    EndIf
    z&=Sendmessage(Button&,$00F2,0,0)'Statuswert Timer-Button neu auslesen
    If (z& <600) And (sek&>0)
        settext edit&,str$(sek&/100)+" ms"
        Text$="Timer-Button wurde "+str$(sek&/100)+" Sekunden lang gedrückt ......    "
        Settext edit_status&,Text$
        setfocus(%Hwnd)
        settext edit&,str$(sek&/100)+" ms"
        '-------------------------------------------------------------------------------------------
        '------In Abhängigkeit vom Timer-Wert wird hier eine Aktion ausgeführt ---------------------
        If sek&/100>1.5
            Rectangle 200,350 - 550,400
        Endif
        If (sek&/100>1.0) And (sek&/100<1.5)
            Ellipse 200,350 - 550,400
        Endif
        If (sek&/100>.5) And (sek&/100<1)
            Line 200,350 - 550,400
        Endif
        If sek&/100<.5
            Cls
        Endif
        '-------------------------------------------------------------------------------------------
        FAERBESTATIC a&,10,10,RGB(229,229,229)
        FAERBESTATIC b&,10,10,RGB(229,229,229)
        FAERBESTATIC c&,10,10,RGB(229,229,229)
        FAERBESTATIC d&,10,10,RGB(229,229,229)
        FAERBESTATIC e&,10,10,RGB(229,229,229)
        FAERBESTATIC f&,10,10,RGB(229,229,229)
        FAERBESTATIC g&,10,10,RGB(229,229,229)
        'Setfocus(%Hwnd)
        Setfocus(Button&)
        settext edit&,"0.00 ms"
        sek&=0
    EndIf
    z&=Sendmessage(Button&,$00F2,0,0)'Statuswert Timer-Button neu auslesen
    If (z&>0) And (stop&=0)
        sek&=0
        stop&=0
        sekundaer_sek&=0
        zeit&=&gettickcount
    EndIf
    If (%mousepressed=2) And (z&>0)'Rechter Mausklick auf Timer-Button (Timerwert wird auf 0.00 gesetzt)
        settext edit&,"0.00 ms"
        Settext edit_status&,"Rechte Maustaste auf Timer-Button wurde gerade geklickt"
    EndIf
EndProc
Proc Anleitung
    Locate 1,1
    Print "Linke Maustaste auf Timer-Button gedrückt halten...Zeit wird in ms im Timer-Button-Edit angezeigt"
    Print "In Abhängigkeit vom Timerwert wird eine Aktion ausgeführt...Nur zu Demo-Zwecken."
    Print "mehr als 1,5 sek -------- es wird ein Rechteck gezeichnet"
    Print "zwischen 1,0 - 1,5 sek -- es wird eine Ellipse gezeichnet"
    Print "zwischen 0,5 - 1,0 sek -- es wird eine Linie gezeichnet"
    Print "weniger als 0,5 sek ----- Es wird ein CLS ausgeführt."
    Print "Rechte Maustaste auf Timer-Button klicken setzt den Timerwert auf 0.00 ms zurück..."
    Print "Dummy-Button macht einfach nur ein CLS...."
    Print "Ende-Button muss ich nicht erklären, oder ???"
    setfocus(%Hwnd)
EndProc
PROC FAERBESTATIC
    Declare wfb#,h&,bild$
    Parameters statbild&,breitobj&,hochobj&,hwndfarb%
    bild$="DUMMY.BMP"
    MCLS breitobj&,hochobj&
    STARTPAINT -1
    SetPixel 0,0,hwndfarb%
    Savebmp bild$,0,0-1,1;0
    ENDPAINT
    Dim wfb#,Len(bild$)+1
    String wfb#,0=bild$
    Let h&=LoadImage(%hinstance,wfb#,0,breitobj&,hochobj&,$50)
    SendMessage(statbild&,$172,0,h&)
    DISPOSE wfb#
    ASSIGN #1,"DUMMY.BMP"
    ERASE #1
EndProc
Grüße
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  RudiB.
 | | Hatte ich schon fast wieder vergessen.... 
 Danke.....teste ich mal aus    ......
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 | 
 Zum Quelltext| Themenoptionen | 4.954 Betrachtungen | 
 ThemeninformationenDieses Thema hat 3 Teilnehmer: |