Jak korzystać z Dialog1 - wyskakujący formularz

Użytkowanie arkusza kalkulacyjnego
nkab
Posty: 14
Rejestracja: pn wrz 28, 2009 10:46 am

Jak korzystać z Dialog1 - wyskakujący formularz

Post autor: nkab »

Dialog1.jpg
Dialog1.jpg (17.39 KiB) Przejrzano 3434 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.
Ostatnio zmieniony wt wrz 29, 2009 9:32 pm przez Jan_J, łącznie zmieniany 1 raz.
Powód: Zmiana HTML <pre> na BBCode [code]
OpenOffice 3.1 na Windows Vista
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

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

Post 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
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
jkwin
Posty: 28
Rejestracja: pt cze 12, 2009 5:57 pm

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

Post 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
Ostatnio zmieniony śr wrz 30, 2009 3:16 pm przez quest-88, łącznie zmieniany 1 raz.
Powód: ujęcie kodu w znacznik BBCode
nkab
Posty: 14
Rejestracja: pn wrz 28, 2009 10:46 am

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

Post 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.
OpenOffice 3.1 na Windows Vista
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

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

Post 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''?
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
nkab
Posty: 14
Rejestracja: pn wrz 28, 2009 10:46 am

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

Post 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.
OpenOffice 3.1 na Windows Vista
ODPOWIEDZ