none
Vent et øjeblik..

    Spørgsmål

  • Hej
     
    Findes der en simpel måde at få en XAL-kode til at holde en pause i x millisekunder? Jeg har en Post-Change i en form, som åbner en webbrowser (produktkonfigurator) og derefter en Box(1,"Klik OK",1), som man skal kvittere for, når webbrowseren er lukket igen (hvorved linjen genindlæses fra databasen). Men hvis en bruger er for hurtig på Enter-tasten og dobbelttrykker, kan han lukke box'en inden webbrowseren får fokus, hvilket er nogen hø. 
    Så kan man holde en pause på 2 sekunder imellem XAL-linjerne for åbning af hhv. browser og åbning af infoboks?

    Mvh Klaus (C5 2010)
    14. november 2016 12:35

Svar

  • Ah - den logik holder nok ikke helt. Du skal have dialogen til at køre en ekstra gang når der IKKE er en keyready - så det bliver lidt noget spagetti...

    MVH gsl@systemconnect.dk Se også: http://blog.systemconnect.dk/

    • Markeret som svar af KWJensen 15. november 2016 07:20
    14. november 2016 14:54

Alle besvarelser

  • SET Sleep(<antal milisekunder>)

    Det er nok også en god ide lige at tømme tastaturbufferen for evt. ENTER-tryk lige efter pausen:
    #ClearKeyQueue() // (...som ligger i KEYCODES.MAC, så den skal du lige have loadet)


    MVH gsl@systemconnect.dk Se også: http://blog.systemconnect.dk/

    • Foreslået som svar af Gert Lynge 14. november 2016 13:20
    14. november 2016 13:20
  • Gert, du er som altid for sej - og du har jo helt rigtigt gennemskuet, at bufferen vil give problemer. Desværre kan jeg ikke cleare den som du foreslår. Har prøvet på alle mulige måder nu, og også at indsætte "SET KeyQueue('#(0xEFFF)') som der står i macroen, men den vil kun cleare tryk der er lagt ind med feks. "SET KEYQUEUE(#KeyDown)". Sleep(2000) inden boksen virker helt som ønsket, men infoboksen giver derefter kun et lille blink, hvis man havde trykket Enter to gange - og så er jeg jo lige vidt.
    Har du andre tricks i ærmet til tastaturbufferen?
    14. november 2016 14:34
  • Hej Klaus

    Næ - her gik jeg og troede at den også clearede en evt. tastaturbuffer med windows-afvikleren!? Men så lærte jeg også noget i dag (jeg har ikke testet efter om det virker her - men noget kunne tyde på at det er Windows der agerer tastaturbuffer og ikke C5 - for ellers burde det vel virke?). Den tror jeg lige jeg vender forbi en af gutterne i Kgs. Lyngby :-)

    Anyway - det bedste jeg kan finde på er at du åbner en NejJa prompt i en løkke - og så skal man manuelt skifte til JA og trykke enter for at gå videre... Eller du kan lave en tilsvarende box med "Vent" og "Fortsæt"-knapper... Men tanken er at det er noget hvor du kun kan gå videre ved at trykke noget andet end lige Enter...


    MVH gsl@systemconnect.dk Se også: http://blog.systemconnect.dk/

    • Foreslået som svar af Gert Lynge 14. november 2016 14:47
    14. november 2016 14:47
  • Fik lige en tanke. Hvad med at køre din dialogboks i en "repeat...until not keyready()"-løkke?

    Så burde du først få en exit af den løkke når brugeren har lukket dialogen og der ikke er flere keys i kø.

    Det er ikke elegant programmering, men hvis det virker, så....


    MVH gsl@systemconnect.dk Se også: http://blog.systemconnect.dk/


    • Foreslået som svar af Gert Lynge 14. november 2016 14:50
    • Redigeret af Gert Lynge 14. november 2016 14:51 while -> repeat..until :-)
    14. november 2016 14:50
  • Ah - den logik holder nok ikke helt. Du skal have dialogen til at køre en ekstra gang når der IKKE er en keyready - så det bliver lidt noget spagetti...

    MVH gsl@systemconnect.dk Se også: http://blog.systemconnect.dk/

    • Markeret som svar af KWJensen 15. november 2016 07:20
    14. november 2016 14:54
  • Men det virker jo  - spaghetti eller ej  ;-) 
    Enden på det blev følgende:

    SET Sleep(2000)
    WHILE KEYREADY()
      SET BOX(2,"Genindlæs data",1)
    END
    SET BOX(2,"Genindlæs data",1)


    Jeg bukker og takker for hjælpen !!
    /Klaus

    14. november 2016 17:12