[OPGELOST] Macro aanroepen na x tijd. (Algemeen)

GerardV
Berichten: 68
Lid geworden op: za sep 12, 2009 10:20 pm
Locatie: Nederland

[OPGELOST] Macro aanroepen na x tijd. (Algemeen)

Bericht door GerardV »

Ik ben op zoek naar een methode om een macro aan te roepen die na x seconden wordt uitgevoerd.

Voor VBA gebruikte ik altijd de Ontime functie om bijvoorbeeld een dialoog venster voor een paar seconden in beeld te tonen en vervolgens automatisch te sluiten.

Hier een een stukje wat ik gebruikte in VBA :

Code: Selecteer alles

   
Const SS_DURATION As Long = 5 'seconds
Application.OnTime Now + TimeSerial(0, 0, SS_DURATION), "CloseForm"
In het voorbeeld wordt na 5 seconden de macro "CloseForm" aangeroepen, ondertussen loopt de macro waar vanuit deze functie wordt aangeroepen gewoon door.

Iemand een idee hoe ik dit in Basic moet aanpakken???

bvd
Gerard
Laatst gewijzigd door GerardV op do sep 17, 2009 6:52 pm, 1 keer totaal gewijzigd.
OpenOffice 3.1 op Windows Vista
Nog niet gehinderd door enige vorm van kennis....
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Macro aanroepen na x tijd.

Bericht door RPG »

Hallo

Ik weet niet zeker of wait voor jouw kan werken?

http://wiki.services.openoffice.org/wik ... Library%29

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
GerardV
Berichten: 68
Lid geworden op: za sep 12, 2009 10:20 pm
Locatie: Nederland

Re: Macro aanroepen na x tijd.

Bericht door GerardV »

Hallo Romke,

De WAIT functie ken ik, deze stopt/onderbreekt de macro voor een ingestelde tijd.

Wat ik eigenlijk probeer voor elkaar te krijgen is om informatie in een dialoogvenster te tonen voor een bepaalde tijd.
Nu kan ik echter wel de dialoog venster laten zien, maar dan stopt de macro tot dat het venster gesloten is. Ik wil echter het dialoogvenster automatisch sluiten na 3 seconden.
OpenOffice 3.1 op Windows Vista
Nog niet gehinderd door enige vorm van kennis....
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Macro aanroepen na x tijd.

Bericht door RPG »

Hallo

Ik weet niet een nette oplossing.
Mogelijk is misschien dat er een andere event actief gemaakt kan worden die de dialog sluit na de gewenste tijd.

Bijvoorbeeld
Elke dialog heeft de event
a) bij het bereiken van focus
b) bij het verlies van focus
Ik neem aan dat een dialog focus krijgt bij het openen.
Koppel dan hieraan een sub die het na de gewenste tijd sluit.

Ik weet niet of het werkt. Het is en idee

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
GerardV
Berichten: 68
Lid geworden op: za sep 12, 2009 10:20 pm
Locatie: Nederland

Re: Macro aanroepen na x tijd.

Bericht door GerardV »

Hoi Romke,
:oops: Moet bekennen dat ik het al vreemd vond dat ik de eigenschappen niet kon zien van het dialoogvenster, maar in tegenstelling tot VBA, moet ik hier echt op het randje staan van het dialoogvenster om de eigenschappen te kunnen zien....

Heb het splash screen nu op de volgende manier opgelost:
  • dialoog venster gemaakt (naam: Splash)
  • In eigenschappen van het dialoogvenster : Tab gebeurtenissen -> Indien focus bereikt -> macro SluitDialog uitvoeren
  • In het document: Extra->Aanpassen-> Document openen -> macro Start uitvoeren
Als ik nu het document open verschijnt het splash screen voor een paar seconden en gaat weer dicht, precies wat ik wilde bereiken......

Bedankt voor de tips.

Groeten
Gerard

P.S.:
Heb hieronder een voorbeeldje van de script toegevoegd voor de liefhebbers

Code: Selecteer alles


REM  *****  BASIC  *****

Dim oDialoog1 as object

Function LaadDialoog(Bibnaam as String, DialoogNaam as String, Optional oBibContainer)
Dim oBib as Object
Dim oBibDialoog as Object
Dim oRuntimeDialoog as Object
If IsMissing(oBibContainer ) then
	oBibContainer = DialogLibraries
End If
	oBibContainer.LoadLibrary("Standard")
	oBib = oBibContainer.GetByName("Standard")
	oBibDialoog = oBib.GetByName("Splash")
	oRuntimeDialoog = CreateUnoDialog("Standard", "Dialoog1")
	LoadDialog() = oRuntimeDialoog
End Function

Rem ------------------------------------------------------------------------
Rem Volgende macro wordt aangeroepen door het openen van document.
Rem 
Rem ------------------------------------------------------------------------

Sub Start
	DialogLibraries.LoadLibrary( "Standard" )
	oDialoog1 = CreateUnoDialog( DialogLibraries.Standard.Splash )
	oDialoog1.Execute()
End Sub

Rem ---------------------------------------------------------------------------
Rem Volgende macro wordt aangeroepen door het dialoogvenster na
Rem het openen van het dialoog venster.
Rem ---------------------------------------------------------------------------

sub SluitDialog
        Rem wacht 2000 miliseconden en sluit het dialoog scherm
	Wait 2000
	oDialoog1.endExecute
End Sub
OpenOffice 3.1 op Windows Vista
Nog niet gehinderd door enige vorm van kennis....
Plaats reactie