Ciao Bart,
Mi sono letto un po' di manuale per cercare di capire la relazione tra frames,
controls e components (e non ci ho capito molto...), comunque provando e
riprovando eccoti un po' di codice che attiva l'ultimo documento aperto il cui
titolo inizia per U.
Ho imprecato non poco perche' stupidamente lo testavo usando message boxes che
mi rimandavano il focus sull'editor di macro...
Vista la complessita' dell'argomento e il fatto che tutto quanto e' una
finestra, dubito che funzioni in casi appena appena piu' complicati, ma dovrebbe
almeno essere un buon punto di partenza per la tua esplorazione :)
Sub subActivateDocInBackground()
Dim oComponents As Object
Dim oDocs As Object
Dim oDoc As Object
Dim oFrame As Object
Dim oComponentWindow As Object
' get the existing components
oComponents = starDesktop().getComponents()
'loop through the components
oDocs = oComponents.createEnumeration()
Do While oDocs.hasMoreElements()
' get the frame, the controller and the component window
oDoc = oDocs.nextElement()
oFrame = oDoc.getCurrentController().getFrame()
oComponentWindow = oFrame.getComponentWindow()
'your test here... this routine only works if
'there is a document whose first letter of the title is U
If Left(oFrame.Title, 1) = "U" Then
'set the focus on this document's window
oComponentWindow.setFocus()
End If
Loop
End Sub
PSEUDO-spiegazione: ogni documento (e associate finestre di dialogo, toolbars
sottodocumenti e cosi' via) e' dentro un frame che e' collegato al contenuto del
documento (component) e ad una sua vista (controller). Da ciascuno di questi tre
elementi si puo' ricavare gli altri due. A te serve prendere possesso del
controller di quello che vuoi (praticamente un oggetto finestra) e dargli il
focus.
Percio'...
Creo una collezione dei documenti aperti (oDocs) e li scorro uno ad uno
Per ogni component (oDoc) ricavo la cornice in cui e' (oFrame) e finalmente la
finestra in cui c'e' il component (oComponentWindow).
Ora sia dall'oggetto oDoc che dal suo frame puoi ricavare tutte le informazioni
che ti pare e fare i test per scoprire quello che vuoi tu, per semplificarmi la
vita io ho preso il titolo e quando questo
inizia per U mando l'istruzione fondamentale di questo programma:
oComponentWindow.setFocus( )
Probabilmente si puo' risparmiare un paio di istruzioni e ricavare piu'
velocemente l'oggetto oComponentWindow, se lo scopri mi farebbe piacere saperlo.
Ciao,
Michele
Quoting Bart Aimar <[EMAIL PROTECTED]>:
>
> Bart Aimar ha scritto:
>
> > Ma se voglio Lavorare su un altro documento GIA' aperto (e di cui
> > conosco il nome) cosa dovrei usare?
> >
> > E se voglio "attivare" un altro documento (sempre già aperto) come
> > imposto questo "select"?
>
> Lo so che continuo a domandare cose strane e che banalmente sono già
> scritte sulla "nota" documentazione... ma la nota documentazione è
> "tanta", spesso si ripete.. a volte sbaglia un po'... e non copre tutto...
> Se poi ci aggiungiamo i miei buchi...
> Ne consegue che la mia non è pigrizia ma vera confusione!
>
>
> Ho cercato di ri-aprire il mio secondo documento... cercando un qualche
> flag che ne impedisse la riapertura (lo vorrei solo "attivare" perché è
> già aperto)... ma regolarmente me lo riapre un'altra volta come doppione
> in sola lettura...
>
> Ho provato ad enumerare i documenti aperti...
> Ho trovato il mio documento... ma non riesco a renderlo attivo.
>
> E' evidente (ancora una volta :-) ) che mi sfugge qualcosa...
>
> Qualche dritta o linea di indagine?
>
> Scusate se insisto... ma è importante!
>
> Grazie
>
> Bart
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
----------------------------------------------
This mail sent through http://www.ukonline.net
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]