Strona 1 z 1

Jak korzystać z Dialog1 - wyskakujący formularz

: wt wrz 29, 2009 11:24 am
autor: nkab
Dialog1.jpg
Dialog1.jpg (17.39 KiB) Przejrzano 3596 razy
Usłuję uruchomić kod z helpa:


kod:

Kod: Zaznacz cały

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

'Funkcja globalna dotycząca ładowania okien dialogowych

Function LoadDialog(nazwa_biblioteki as String, nazwa_okna as String, Optional oLibContainer)
 Dim oLib as Object
 Dim oLibDialog as Object
 Dim oRuntimeDialog as Object
 
 If IsMissing(oLibContainer ) then
  oLibContainer = DialogLibraries
 End If

 oLibContainer.LoadLibrary(nazwa_biblioteki)
 oLib = oLibContainer.GetByName(nazwa_biblioteki)
 oLibDialog = oLib.GetByName(nazwa_okna)
 oRuntimeDialog = CreateUnoDialog(oLibDialog)

 LoadDialog() = oRuntimeDialog

End Function


'Wyświetlanie okna dialogowego

'globalna definicja zmiennych
Dim oDialog1 AS Object

Sub StartDialog1
 BasicLibraries.LoadLibrary("Tools")
 oDialog1 = LoadDialog("Standard", "Dialog1")
 oDialog1.Execute()                               'wyswietlenie okna
end sub


'Odczyt lub edycja właściwości formantów w programie BASIC

Sub Sample1

 BasicLibraries.LoadLibrary("Tools")
 oDialog1 = LoadDialog("Standard", "Dialog1")

 oDialog1Model = oDialog1.Model                         'pobranie modelu okna dialogowego

 oLabel1 = oDialog1.GetControl("Label1")                'wyświetlenie tekstu Label1
 MsgBox oLabel1.Text
 oLabel1.Text = "Nowe pliki"                            'ustawienie nowego tekstu dla formantu Label1
 MsgBox oLabel1.Text
 
end sub

... ale w msgbox jest uwidocznione, że Label1 ma już tekst "Nowe pliki" a na obrazku widać, że jednak nie.

Wogóle jak wykorzystywać w makrach ten wyskaujący formularz, czy może jednak inaczej się to w praktyce rozwiązuje.

Andrzej.

Re: Jak korzystać z Dialog1 - wyskakujący formularz

: śr wrz 30, 2009 9:35 am
autor: Jan_J
Nie poprawię Twojego przykładu, zbyt rzadko tego używam. Ale jeżeli używam, to piszę kod generatora dialogu nie używając kreatorów. Takie prawicowo-nacjonalistyczne odchylenie. Tak jak to próbujesz -- też można; wtedy kod dialogu jest na trwałe zapisany w Twojej konfiguracji OOo, i tylko go stamtąd pobierasz.
Oto działający przykład:

Kod: Zaznacz cały


Sub Test()
    fname = "file:///"
    fname = OpenFileDialog(fname, "Otwórz plik")
    fname = SaveFileDialog(fname, "Zapisz plik")
End Sub

function OpenFileDialog(fname, title) as string
    sFilePickerArgs = Array(com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_SIMPLE)
    oFilePicker = CreateUnoService( "com.sun.star.ui.dialogs.FilePicker" )
    With oFilePicker
        .Initialize ( sFilePickerArgs() )
        .setDisplayDirectory ( fname )
        .setControlProperty ("CancelButton", "Visible", true)
        .setControlProperty ("HelpButton", "Visible", false)
        .setTitle ( title )
    End With
    If oFilePicker.execute() Then
        sFiles = oFilePicker.getFiles()
        sFileURL = sFiles(0)
        fname = sFileURL
    Else
	fname = ""
    End If
    oFilePicker.Dispose()
    OpenFileDialog = fname
End function

function SaveFileDialog(fname$, title) as string
    sFilePickerArgs = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE)
    oFilePicker = CreateUnoService( "com.sun.star.ui.dialogs.FilePicker" )
    With oFilePicker
        .Initialize ( sFilePickerArgs() )
        .setDisplayDirectory ( fname )
        .setControlProperty ("CancelButton", "Visible", true)
        .setControlProperty ("HelpButton", "Visible", false)
        .setTitle ( title )
    End With
    If oFilePicker.execute() Then
        sFiles = oFilePicker.getFiles()
        sFileURL = sFiles(0)
        fname = sFileURL
    Else
	fname = ""
    End If
    oFilePicker.Dispose()
    SaveFileDialog = fname
End function

Re: Jak korzystać z Dialog1 - wyskakujący formularz

: śr wrz 30, 2009 2:18 pm
autor: jkwin
Sprobuj tak:

Kod: Zaznacz cały

Sub pokaz_dialog

DialogLibraries.LoadLibrary( "Standard" )
oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1) 'nazwa okna dialogowego- Dialog1
'oDLg.Title = "Tytuł dialogu"
oWpis = oDlg.Model.GetByName("Label1")
oWpis.Label= "Nowe pliki"
MsgBox oWpis.Label
oDlg.Execute()

End Sub

Re: Jak korzystać z Dialog1 - wyskakujący formularz

: czw paź 01, 2009 5:43 pm
autor: nkab
Co ja zrobiłbym bez Was.
Będę próbował, chociaż narazie Calc jest dla mnie obcy jednak wielu moich klientów
uzywa tylko Oo i poprostu zmuszony jestem go poznać.

Wyrazy wdzięczności

Andrzej.

Re: Jak korzystać z Dialog1 - wyskakujący formularz

: pt paź 02, 2009 3:16 pm
autor: Jan_J
... jednak wielu moich klientów uzywa tylko Oo
To mogłoby być ciekawe... jakaś syntetyczna notka na ten temat, oczywiście bez ujawniania żadnych konkretów, w dziale ,,Pogawędki''?

Re: Jak korzystać z Dialog1 - wyskakujący formularz

: pn paź 05, 2009 12:19 pm
autor: nkab
>>... jednak wielu moich klientów uzywa tylko Oo
>To mogłoby być ciekawe... jakaś syntetyczna notka na ten temat, oczywiście bez ujawniania żadnych konkretów,...

Poprostu powstało sporo małych jednoosobowych firemek, które jakoś muszą pomniejszać koszty
na starcie.

Co okna formularza Dialog1 to wystarczyło zmienne obiektowe dać jako globalne (na zewnątrz funkcji)
i już aktalizacja danych była, nazwijmy to, on-line.

Andrzej.