Malutki formularz podręczny z przycikami do otwartych okien formularzy/raportów

Kategoria: Visual Basic i MS Access.

Wersja archiwalna tematu "Malutki formularz podręczny z przycikami do otwartych okien formularzy/raportów" z grupy pl.comp.bazy-danych.msaccess



Paweł
17 Wrz 2005, 08:05
Witam,

Czy ktoś z grupowiczów miał okazję zrobić formularz podręczny,
w którym dynamicznie tworzone byłyby przycisko do akutalnie otwartych
okien formularzy i raportów w bazie?

Jak podejść programowo do tego zagadnienia - odświeżanie itp.

Zastosowanie byłoby głównie w nawigacji po formularzach roboczych.

Z góry dziękuję za sugestie  i pozdrawiam,
Paweł

Krzysztof Wiśniewski
18 Wrz 2005, 08:25

| Witam,
|
| Czy ktoś z grupowiczów miał okazję zrobić formularz podręczny,
| w którym dynamicznie tworzone byłyby przycisko do akutalnie otwartych
| okien formularzy i raportów w bazie?
|
| Jak podejść programowo do tego zagadnienia - odświeżanie itp.
|
| Zastosowanie byłoby głównie w nawigacji po formularzach roboczych.
|

Najprościej, choć nie twierdzę, że najwydajniej:

1. Utworzyć podręczny formularz z odpowiednio dużą liczbą niewidocznych
przycisków, nazwanych np. "button001" ... "button999:

2. W kodzie formularza oprogramować funkcję LadujPrzyciski(), ktora:

    - przeleci po kolekcji Forms, zapamiętując po kolei nazwy obiektów
(formularzy), za wyjątkiem projektowanego formularza.
    - dla każdego z nich sprawdzi, czy jest otwarty (funkcja IsOpen -
Google)
    - dla każdego z otwartych formualarzy uaktywni (Visible = True) jeden z
przygotowanych wcześniej przycisków i przypisze jego zdarzeniu Click kod
aktywujący wskazany formularz

3. Wywoływać funkcję LadujPrzyciski w zdarzeniu Open projektowanego
formularza w tych zdarzeniach, w których konfiguracja otwartych formularzy w
bazie może się zmienić.

To tak w zarysie... Jeśli masz dalsze pytania, to wal śmiało.

Chociaż zawsze uważałem, że trzymanie nadmiernej liczby otwartych formularzy
nie jest najlepszym rozwiązaniem...

Pozdrawiam,
Krzysiek

Krzysztof Wiśniewski
18 Wrz 2005, 09:03
Użytkownik "Krzysztof Wiśniewski" <ktu@poczta.onet.plnapisał w
wiadomości |
| [...]
|
| 3. Wywoływać funkcję LadujPrzyciski w zdarzeniu Open projektowanego
| formularza ORAZ w tych zdarzeniach BAZY, w których konfiguracja otwartych
formularzy w
| bazie może się zmienić.
|
| [...]

Pozdrawiam,
Krzysiek

Paweł
19 Wrz 2005, 03:02
Bardzo dziękuję za naprowadzenie i do pozdrawiam pierwszego debugu :)

Paweł

MaC
21 Wrz 2005, 03:24

Użytkownik "Krzysztof Wiśniewski" <ktu@poczta.onet.plnapisał w
wiadomości

Użytkownik "Krzysztof Wiśniewski" <ktu@poczta.onet.plnapisał w
wiadomości |
| [...]
|
| 3. Wywoływać funkcję LadujPrzyciski w zdarzeniu Open projektowanego
| formularza ORAZ w tych zdarzeniach BAZY, w których konfiguracja
otwartych
formularzy w
| bazie może się zmienić.
|
| [...]

Pozdrawiam,
Krzysiek


Tak, to chyba dobre rozwiązanie. Swego czasu generowałem coś podobnego w
kodzie. Mniej więcej jak niżej:

sub GenerujFormTmp()

Dim Frm As Form
Dim Btn As Control
Dim Lbl As Control

Dim i As Integer

On Error Resume Next

Set Frm = CreateForm
x = 100
For i = 1 To Application.Forms.Count

If CurrentProject.AllForms(i).IsLoaded Then
    x = x + 700
    Set Btn = CreateControl(Frm.Name, acCommandButton, acDetail, ,
CurrentProject.AllForms(i).Name, x, 600, 600, 400)
    Set Lbl = CreateControl(Frm.Name, acLabel, acDetail, Btn.Name,
CurrentProject.AllForms(i).Name, x, 100, 600, 400)
End If

Next i

Frm.SetFocus
DoCmd.RunCommand acCmdFormView
DoCmd.Restore

end sub

Pozostaje jeszcze wtedy zabawa z dynamicznym dodawaniem procedur obsługi
zdarzeń nowo powstałych obiektów ;-)

Pozdrawiam
Mariusz

Paweł
22 Wrz 2005, 02:29

Pozostaje jeszcze wtedy zabawa z dynamicznym dodawaniem procedur obsługi
zdarzeń nowo powstałych obiektów ;-)


Hmm, no właśnie - początek rozwiązana bardzo dobry, tylko jak zakodować
dodawanie procedur obsług zdarzeń dla
dodanych przycisków?

Pozdrawiam,
Paweł

Krzysztof Naworyta
22 Wrz 2005, 04:18
Paweł <agnies@egeo.plnapisał:
|| Pozostaje jeszcze wtedy zabawa z dynamicznym dodawaniem procedur
|| obsługi zdarzeń nowo powstałych obiektów ;-)
||
|
| Hmm, no właśnie - początek rozwiązana bardzo dobry, tylko jak
| zakodować dodawanie procedur obsług zdarzeń dla
| dodanych przycisków?

przeglądnij źródła do mojego mde2mdb a się dowiesz ...
;-)

Ale tak naprawdę to ja bym szczerze odradzał budowanie formularzy "w locie",
zwłaszcza w aplikacjach produkcyjnych.
1. nie przejdzie w mde !
2. przerzuty do IDE w trakcie pracy programu ...

Oczywiście zamiast procedur zdarzeń przyciski można oprogramować
zewnętrznymi funkcjami publicznymi:

With forms("Jakiś")("Przycisk1")
    .OnClick = "=MojaFunkcjaObslugiKliku(1,2)"
    .MouseMove = "=InnaFunkcja()"
End With

ale to i tak "średnie" rozwązanie, raczej takie na swoje własne chałupnicze
potrzeby ...
Jeśli już, to zrobiłbym sztywny formularz z 10-cioma przyciskami, który
otwierany z najprzeróżniejszymi parametrami część z nich by
ukrywał/pokazywał, zmieniał captions, ikony itd.

A, że zapytam, własne paski narzędzi to nie lepsze rozwiązanie niż taki
popup ?
Całkowicie programowalne, z możliwością generowania w locie!

MaC
22 Wrz 2005, 07:39

Paweł <agnies@egeo.plnapisał:
|| Pozostaje jeszcze wtedy zabawa z dynamicznym dodawaniem procedur
|| obsługi zdarzeń nowo powstałych obiektów ;-)
||
|
| Hmm, no właśnie - początek rozwiązana bardzo dobry, tylko jak
| zakodować dodawanie procedur obsług zdarzeń dla
| dodanych przycisków?

przeglądnij źródła do mojego mde2mdb a się dowiesz ...
;-)

Ale tak naprawdę to ja bym szczerze odradzał budowanie formularzy "w
locie",
zwłaszcza w aplikacjach produkcyjnych.
1. nie przejdzie w mde !
2. przerzuty do IDE w trakcie pracy programu ...

Oczywiście zamiast procedur zdarzeń przyciski można oprogramować
zewnętrznymi funkcjami publicznymi:

With forms("Jakiś")("Przycisk1")
    .OnClick = "=MojaFunkcjaObslugiKliku(1,2)"
    .MouseMove = "=InnaFunkcja()"
End With

ale to i tak "średnie" rozwązanie, raczej takie na swoje własne
chałupnicze
potrzeby ...
Jeśli już, to zrobiłbym sztywny formularz z 10-cioma przyciskami, który
otwierany z najprzeróżniejszymi parametrami część z nich by
ukrywał/pokazywał, zmieniał captions, ikony itd.

A, że zapytam, własne paski narzędzi to nie lepsze rozwiązanie niż taki
popup ?
Całkowicie programowalne, z możliwością generowania w locie!

--
KN


Tu się zgodzę się, że z K.Noworytą - machnąłem to dawno nie pamiętam już do
czego;-)
, aczkolwiej jeśli idziesz "w zaparte" w tę stronę to w kwestii generowania
procedur zajrzyj do opisu zdaje się CreateEventProc

Pozdrawiam
MaC

MaC
22 Wrz 2005, 07:45

| Paweł <agnies@egeo.plnapisał:
| || Pozostaje jeszcze wtedy zabawa z dynamicznym dodawaniem procedur
| || obsługi zdarzeń nowo powstałych obiektów ;-)
| ||
| |
| | Hmm, no właśnie - początek rozwiązana bardzo dobry, tylko jak
| | zakodować dodawanie procedur obsług zdarzeń dla
| | dodanych przycisków?

| przeglądnij źródła do mojego mde2mdb a się dowiesz ...
| ;-)

| Ale tak naprawdę to ja bym szczerze odradzał budowanie formularzy "w
locie",
| zwłaszcza w aplikacjach produkcyjnych.
| 1. nie przejdzie w mde !
| 2. przerzuty do IDE w trakcie pracy programu ...

| Oczywiście zamiast procedur zdarzeń przyciski można oprogramować
| zewnętrznymi funkcjami publicznymi:

| With forms("Jakiś")("Przycisk1")
|     .OnClick = "=MojaFunkcjaObslugiKliku(1,2)"
|     .MouseMove = "=InnaFunkcja()"
| End With

| ale to i tak "średnie" rozwązanie, raczej takie na swoje własne
chałupnicze
| potrzeby ...
| Jeśli już, to zrobiłbym sztywny formularz z 10-cioma przyciskami, który
| otwierany z najprzeróżniejszymi parametrami część z nich by
| ukrywał/pokazywał, zmieniał captions, ikony itd.

| A, że zapytam, własne paski narzędzi to nie lepsze rozwiązanie niż taki
| popup ?
| Całkowicie programowalne, z możliwością generowania w locie!

| --
| KN

Tu się zgodzę się, że z K.Noworytą - machnąłem to dawno nie pamiętam już
do
czego;-)
, aczkolwiej jeśli idziesz "w zaparte" w tę stronę to w kwestii
generowania
procedur zajrzyj do opisu zdaje się CreateEventProc

Pozdrawiam
MaC


to "że,z" zakradło się niechcący

Paweł
22 Wrz 2005, 11:32

| A, że zapytam, własne paski narzędzi to nie lepsze rozwiązanie niż taki
| popup ?
| Całkowicie programowalne, z możliwością generowania w locie!
| Tu się zgodzę się, że z K.Noworytą - machnąłem to dawno nie pamiętam już
do
| czego;-)


Rozumiem, że każdy nowy formularz miałby swój button, a każdy button miałby
generowaną procedurę
obslugi formularza?
Może jeszcze jakiś mały schmacik with  ...... .. :)

Pozdrawiam,
Paweł

Piotr Lipski
24 Lut 2006, 09:01

MaC wrote:


[...]
Tu się zgodzę się, że z K.Noworytą - machnąłem to dawno nie pamiętam już do


[...]

Eeee... Z kim się zgodzisz?

MaC
24 Lut 2006, 09:45
Skoro tak, to faktycznie, popełniłem paskudną literówkę...that's my fault,
sir...

Za co naturalnie przepraszam sir Krzysztofa.

Pozdrawiam
(zawstydzony i nieco zaskoczony, bo to pewnie dawno było...;-)
MaC

MaC wrote:

[...]
| Tu się zgodzę się, że z K.Noworytą - machnąłem to dawno nie pamiętam już
| do
[...]

Eeee... Z kim się zgodzisz?

--
PL, Samozwańczy Rzecznik KaeNa Do Spraw Poprawności Pisowni Jego Nazwiska
;)