Zakładki formularzy Base
Zakładki formularzy Base
Witam
Potrzebuję prostego udoskonalenia w mojej bazie danych.
Chce mieć możliwość przełaczania się pomiędzy poszczególnymi formularzami bazy poprzez kliknięcia (wybór) ich zakładek tak jak jest to w arkuszu kalkulacyjnym gdzie na dole arkusza wybieramy (Arkusz1, Arkusz2, itd).
Zapewne jest to proste ale nie wiem jak to zrobić - POMOCY i z góry dziękuje za wszelkie sugestie.
pozdrawiam
Potrzebuję prostego udoskonalenia w mojej bazie danych.
Chce mieć możliwość przełaczania się pomiędzy poszczególnymi formularzami bazy poprzez kliknięcia (wybór) ich zakładek tak jak jest to w arkuszu kalkulacyjnym gdzie na dole arkusza wybieramy (Arkusz1, Arkusz2, itd).
Zapewne jest to proste ale nie wiem jak to zrobić - POMOCY i z góry dziękuje za wszelkie sugestie.
pozdrawiam
Windows 7 i openoffice 3.2
Re: Zakładki formularzy Base
Nie jest to proste ani oczywiste. Formularze nie obsługują zakładek. Można jednak uzyskać żądany efekt stosując przyciski, które pokazują/ukrywają poszczególne części formularzy. Same formularze nie mają właściwości pokaż/ukryj. Do przycisków podłączone są odpowiednie makra.
W załączniku plik do zabawy i rozwinięcia:
- baza składa się z dwóch tabel
- każda tabela umieszczona jest w oddzielnym formularzu (można użyć jednego)
- formularze z tabelami są pod-formularzami "formularza głównego" (można wszystko zrobić w głównym)
- jeżeli formularz ma obsługiwać więcej niż jedną tabelę to należy przesłać do niego kwerendę łączącą pożądane tabele (tak jest w przykładzie)
W załączniku plik do zabawy i rozwinięcia:
- baza składa się z dwóch tabel
- każda tabela umieszczona jest w oddzielnym formularzu (można użyć jednego)
- formularze z tabelami są pod-formularzami "formularza głównego" (można wszystko zrobić w głównym)
- jeżeli formularz ma obsługiwać więcej niż jedną tabelę to należy przesłać do niego kwerendę łączącą pożądane tabele (tak jest w przykładzie)
- Załączniki
-
- formularze_zakladki.odb
- (12.47 KiB) Pobrany 594 razy
OOo3.1.1 na Ubuntu 9.04
Re: Zakładki formularzy Base
Dzięki za ciekawą podpowiedź,
poćwiczę tą nową dla mnie możliwość i chyba znajdę dla tego rozwiązania też zastosowania ( szkoda, że nie znam się nic a nic na makrach)
a można tak ustawić właściwość przycisków aby formularz włączał się z poukrywanymi tabelami ??????? jeżeli tak to proszę o małą podpowiedź.
pozdrawiam.
poćwiczę tą nową dla mnie możliwość i chyba znajdę dla tego rozwiązania też zastosowania ( szkoda, że nie znam się nic a nic na makrach)
a można tak ustawić właściwość przycisków aby formularz włączał się z poukrywanymi tabelami ??????? jeżeli tak to proszę o małą podpowiedź.
pozdrawiam.
Windows 7 i openoffice 3.2
Re: Zakładki formularzy Base
Elementy można ukrywać na dwa sposoby.
Ten, który jest w przykładzie powyżej sprawia problemy z domyślnym ukryciem (czasem nie działa jeżeli podłączyć makro do ładowania formularza). Ponadto sposób ten nie jest równoważny właściwości elementu "Widoczne" -> "Tak/Nie".
Drugi sposób jest właśnie ustawianiem widoczności dostępnej we właściwościach elementu i nie zdarzyło mi się, żeby nie zadziałał przy ładowaniu formularza. W tym przypadku stan elementu jest zapisywany razem z formularzem przy jego zamykaniu.
W przypadku większej ilości elementów w formularzu (w przykładach jest tylko jeden - tabela) należy napisać pętlę przebiegającą po wszystkich elementach z wyjątkiem przycisków (przycisków nie chcemy schować).
Dodatkowo, w przypadku większej ilości formularzy, należy napisać pętlę przebiegającą po wszystkich formularzach.
Lepsze naśladownictwo zakładek uzyska się jeżeli wybór jednego formularza spowoduje automatyczne ukrycie pozostałych. Żeby było bardziej elegancko można użyć "przycisków radiowych", które z definicji mają tę właściwość, że w danym momencie włączony jest tylko jeden z nich.
Ten, który jest w przykładzie powyżej sprawia problemy z domyślnym ukryciem (czasem nie działa jeżeli podłączyć makro do ładowania formularza). Ponadto sposób ten nie jest równoważny właściwości elementu "Widoczne" -> "Tak/Nie".
Drugi sposób jest właśnie ustawianiem widoczności dostępnej we właściwościach elementu i nie zdarzyło mi się, żeby nie zadziałał przy ładowaniu formularza. W tym przypadku stan elementu jest zapisywany razem z formularzem przy jego zamykaniu.
W przypadku większej ilości elementów w formularzu (w przykładach jest tylko jeden - tabela) należy napisać pętlę przebiegającą po wszystkich elementach z wyjątkiem przycisków (przycisków nie chcemy schować).
Dodatkowo, w przypadku większej ilości formularzy, należy napisać pętlę przebiegającą po wszystkich formularzach.
Lepsze naśladownictwo zakładek uzyska się jeżeli wybór jednego formularza spowoduje automatyczne ukrycie pozostałych. Żeby było bardziej elegancko można użyć "przycisków radiowych", które z definicji mają tę właściwość, że w danym momencie włączony jest tylko jeden z nich.
- Załączniki
-
- formularze_zakladki.odb
- poprawiony pierwszy przykład
- (13.54 KiB) Pobrany 410 razy
-
- formularze_zakladki_b.odb
- przykład z drugą metodą ukrywania
- (13.52 KiB) Pobrany 456 razy
-
- ukrywanie_elementow.odt
- przykład pokazujący, że obie metody ukrywania nie są ze sobą kompatybilne, tzn. jeżeli ukryjemy przy użyciu jednej to nie można przywrócić elementu przy użyciu drugiej; przy czym zastosowanie obu na raz ukrywa element "podwójnie"
- (15.2 KiB) Pobrany 416 razy
OOo3.1.1 na Ubuntu 9.04
Re: Zakładki formularzy Base
Dzięki za porady - ćwiczę te przyciski ze skutkiem pozytywnym.
Faktycznie wersja druga jest najlepsza i nie da się ukryć, że najbardziej efektywnym rozwiązaniem byłoby dopisanie pętli,
tak aby przycisk włączający kolejny formularz automatycznie ukrywał poprzedni otwarty formularz.
Będę wdzięczny "mq2" za dopisanie mi do przykładu takiej pętli.
pozdrawiam
Faktycznie wersja druga jest najlepsza i nie da się ukryć, że najbardziej efektywnym rozwiązaniem byłoby dopisanie pętli,
tak aby przycisk włączający kolejny formularz automatycznie ukrywał poprzedni otwarty formularz.
Będę wdzięczny "mq2" za dopisanie mi do przykładu takiej pętli.
pozdrawiam
Windows 7 i openoffice 3.2
Re: Zakładki formularzy Base
Przykład jest uniwersalny, tzn. stosuje się dla dowolnej liczby pod-formularzy i dowolnej liczby elementów w każdym pod-formularzu. Przy czym:
- formularz główny zawiera pod-formularze oraz przyciski radiowe
- każdy pod-formularz zawiera pewną ilość elementów
- każdy przycisk radiowy jako "Wartość odwołania (wł.)" ma wpisaną ręcznie nazwę odpowiadającego mu pod-formularza
- wszystkie przyciski radiowe mają tę samą nazwę dzięki czemu aktywny jest tylko jeden w danym momencie
Makro pokazujące wybrany pod-formularz i ukrywające pozostałe pod-formularze:
Makro ukrywające na starcie wszystkie formularze i resetujące przyciski:
- formularz główny zawiera pod-formularze oraz przyciski radiowe
- każdy pod-formularz zawiera pewną ilość elementów
- każdy przycisk radiowy jako "Wartość odwołania (wł.)" ma wpisaną ręcznie nazwę odpowiadającego mu pod-formularza
- wszystkie przyciski radiowe mają tę samą nazwę dzięki czemu aktywny jest tylko jeden w danym momencie
Makro pokazujące wybrany pod-formularz i ukrywające pozostałe pod-formularze:
Kod: Zaznacz cały
sub przelacz(oZdarz as object)
dim oMainForm as object
dim i as long
dim ii as long
dim oForm as object
dim oFormTen as object
dim oElem as object
dim oPrzyc as object
oPrzyc = oZdarz.source.model
oMainForm = oPrzyc.parent
for i = 0 to ubound(oMainForm.getElementNames())
oForm = oMainForm.getByIndex(i)
if inStr(oForm.name, "Form") then
for ii = 0 to ubound(oForm.getElementNames())
oElem = oForm.getByIndex(ii)
if (oForm.name = oPrzyc.refValue) then
oElem.enableVisible = true
else oElem.enableVisible = false
end if
next ii
end if
next i
end sub
Kod: Zaznacz cały
sub ukryj_wszystko(oZdarz as object)
dim oMainForm as object
dim oForm as object
dim oElem as object
dim i as long
dim ii as long
oMainForm = oZdarz.source
for i = 0 to ubound(oMainForm.getElementNames())
oForm = oMainForm.getByIndex(i)
if inStr(oForm.name, "Form") then
for ii = 0 to ubound(oForm.getElementNames())
oElem = oForm.getByIndex(ii)
oElem.enableVisible = false
next ii
end if
next i
for i = 0 to ubound(oMainForm.getElementNames())
oElem = oMainForm.getByIndex(i)
if inStr(oElem.name, "Radio") then
oElem.state = 0
exit sub
end if
next i
end sub
- Załączniki
-
- formularze_zakladki_v2.odb
- (14.54 KiB) Pobrany 460 razy
OOo3.1.1 na Ubuntu 9.04
Re: Zakładki formularzy Base
Dzięki mq2 to są konkretne porady
to teraz powinny mi się już zmieścić na jednym formularzu wszystkie niezbędne pola do wprowadzania,
wynikjące z wszystkich relacji.
pozdrawiam
to teraz powinny mi się już zmieścić na jednym formularzu wszystkie niezbędne pola do wprowadzania,
wynikjące z wszystkich relacji.
pozdrawiam
Windows 7 i openoffice 3.2
Re: Zakładki formularzy Base
Wiem, że wątek stary ale mam problem
zaczynam przygodę z Base i jak te tabelki mi się już ładnie pojawiają to nie mogę ich modyfikować. Co źle zrobiłem.
Pozdrawiam

Pozdrawiam
Open Office 3.4.1 na Win Xp