Narzędzia użytkownika

Narzędzia witryny


fedora:aplikacje:libreoffice:base

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
fedora:aplikacje:libreoffice:base [2025/05/08 20:45] – [Opcja "Trzymaj razem"] sindapfedora:aplikacje:libreoffice:base [2025/05/08 21:08] (aktualna) – [Makro otwierania i zamykania formularza] sindap
Linia 106: Linia 106:
 ===== Formularze ===== ===== Formularze =====
  
 +==== Makro otwierania i zamykania formularza ====
 +Przydatne jeżeli chcemy pod przyciskiem utworzyć akcje zamknięcie aktualnie otwartego formularza a jednocześnie otworzenie nowego. Po dodanie skryptu pod ''właściwościami formantu'' przycisku w polu ''dodatkowe informacje'' wpisujemy ''TBLAUTOR;TBLKSIAZKA''. W tym przypadku zostanie zamknięty formularz ''TBLKSIAZKA'' a następnie otwarty formularz ''TBLAUTOR''. W zakładce ''Wydarzenia'' i polu ''Wykonaj akcję'' wybieramy nasze makro ''Standard.Module1.OpenAndCloseForm_FromTag (document, Basic)''.
  
 +Działanie to jest przydane przy wypełnianiu danych tabel z relacją wiele do wielu.
 +
 +Jeżeli chcemy pozostawić otwarty formularz ''TBLKSIAZKA'' w polu ''dodatkowe informacje'' wystarczy wpisać ''TBLAUTOR;'' i pominąć nazwę zamykanego formularza.
 +
 +Poniższe makro działa uniwersalnie na wszystkie formularze.
 +
 +<code sub>
 +Sub OpenAndCloseForm_FromTag(oEvent As Object)
 +    Dim oButton As Object
 +    Dim sTagContent As String
 +    Dim sTargetFormName As String
 +    Dim sFormToCloseName As String
 +    Dim oFormToOpen As Object
 +    Dim oFormToClose As Object
 +
 +    ' Pobierz zawartość pola Etykieta danych (Tag)
 +    oButton = oEvent.Source.Model
 +    sTagContent = Trim(oButton.Tag)
 +
 +    If sTagContent = "" Then
 +        MsgBox "Nie podano nazw formularzy w polu 'Etykieta danych'."
 +        Exit Sub
 +    End If
 +
 +    ' Podziel dane z pola Tag wg średnika
 +    Dim aParts() As String
 +    aParts = Split(sTagContent, ";")
 +
 +    If UBound(aParts) < 0 Then
 +        MsgBox "Brak poprawnych nazw formularzy w polu 'Etykieta danych'."
 +        Exit Sub
 +    End If
 +
 +    sTargetFormName = Trim(aParts(0)) ' formularz do otwarcia
 +
 +    If UBound(aParts) >= 1 Then
 +        sFormToCloseName = Trim(aParts(1)) ' formularz do zamknięcia
 +    Else
 +        sFormToCloseName = "" ' brak drugiego formularza
 +    End If
 +
 +    ' Otwórz docelowy formularz
 +    On Error GoTo OpenError
 +    oFormToOpen = ThisDatabaseDocument.FormDocuments.getByName(sTargetFormName)
 +    oFormToOpen.open
 +    On Error GoTo 0
 +
 +    ' Zamknij formularz, jeśli podano jego nazwę
 +    If sFormToCloseName <> "" Then
 +        On Error GoTo CloseError
 +        oFormToClose = ThisDatabaseDocument.FormDocuments.getByName(sFormToCloseName)
 +        oFormToClose.close(True)
 +        On Error GoTo 0
 +    End If
 +
 +    Exit Sub
 +
 +OpenError:
 +    MsgBox "Nie udało się otworzyć formularza: " & sTargetFormName
 +    Resume Next
 +
 +CloseError:
 +    MsgBox "Nie udało się zamknąć formularza: " & sFormToCloseName
 +    Resume Next
 +End Sub
 +</code>
  
  
fedora/aplikacje/libreoffice/base.1746729919.txt.gz · ostatnio zmienione: przez sindap

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki