2010-03-31 6 views
6

Ciao Ho bisogno di emulare un riquadro attività facendo galleggiare un modulo non modale sulla finestra principale di Excel. La ragione di questo requisito è che ho bisogno di avere le caratteristiche del taskmap per il mio componente aggiuntivo 2003, ma non posso usare il modello incentrato sul documento.È necessario posizionare un modulo modeless floating sulla finestra principale di excel (riquadro quasi-task)

Qualcuno può suggerire quale sarebbe il modo migliore per farlo? Il modulo non modale dovrebbe rilevare l'evento di ridimensionamento della finestra principale e ridimensionare di conseguenza, e inoltre deve sempre posizionarsi nella parte inferiore della finestra (un po 'come un riquadro di aggancio).

risposta

0

Ho intenzione di condividere ciò che ho trovato finora. Un articolo in Code Project è stato molto istruttivo, penso che questo mi aiuterà a capire cosa devo fare a lungo termine, anche se riguarda l'integrazione dei pannelli di Outlook. Non ho avuto il tempo di provare veramente e integrare la soluzione descritta di seguito nel mio progetto Excel, ma l'idea delineata nell'articolo sembra solida.

http://www.codeproject.com/KB/office/additional_panel_Outlook.aspx

io aggiornare il mio post una volta che ottengo ulteriori informazioni.

1

Forse non ho preso la domanda, ma sembra che se si imposta semplicemente la proprietà ShowModal del modulo su False, si otterrà ciò che si desidera.

1

ho preferito this method which is simple and straight forward:

Ecco come ho implementato esso (in VB):

Public Class WindowWrapper 

    Implements System.Windows.Forms.IWin32Window 

    Private _hwnd As IntPtr 

    Public Sub New(ByVal handle As IntPtr) 
     _hwnd = handle 
    End Sub 

    Public ReadOnly Property Handle() As IntPtr Implements System.Windows.Forms.IWin32Window.Handle 
     Get 
      Return _hwnd 
     End Get 
    End Property 

End Class 

Dim owner As New WindowWrapper(CType(gXLApp.Hwnd, IntPtr)) 
gfTimeStamp = New FTimeStamp 
gfTimeStamp.Show(owner) 

funzionava alla grande!