Zakładki formularzy Base

Użytkowanie programu bazodanowego
Awatar użytkownika
czp
Posty: 47
Rejestracja: czw mar 04, 2010 5:38 pm

Zakładki formularzy Base

Post autor: czp »

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
Windows 7 i openoffice 3.2
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: Zakładki formularzy Base

Post autor: mg2 »

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)
Załączniki
formularze_zakladki.odb
(12.47 KiB) Pobrany 594 razy
OOo3.1.1 na Ubuntu 9.04
Awatar użytkownika
czp
Posty: 47
Rejestracja: czw mar 04, 2010 5:38 pm

Re: Zakładki formularzy Base

Post autor: czp »

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.
Windows 7 i openoffice 3.2
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: Zakładki formularzy Base

Post autor: mg2 »

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.
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
Awatar użytkownika
czp
Posty: 47
Rejestracja: czw mar 04, 2010 5:38 pm

Re: Zakładki formularzy Base

Post autor: czp »

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
Windows 7 i openoffice 3.2
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: Zakładki formularzy Base

Post autor: mg2 »

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:

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
Makro ukrywające na starcie wszystkie formularze i resetujące przyciski:

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
Awatar użytkownika
czp
Posty: 47
Rejestracja: czw mar 04, 2010 5:38 pm

Re: Zakładki formularzy Base

Post autor: czp »

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
Windows 7 i openoffice 3.2
toshii
Posty: 2
Rejestracja: sob kwie 13, 2013 11:35 pm

Re: Zakładki formularzy Base

Post autor: toshii »

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
Open Office 3.4.1 na Win Xp
ODPOWIEDZ