Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Schliessen-Schaltfläche vom ACCESS-Fenster deaktivieren

797 views
Skip to first unread message

Konrad Bartl

unread,
Apr 30, 2001, 5:16:50 AM4/30/01
to
Ich benutze MSACCESS 97 und habe in allen Formularen die Schaltfläche
"Schliessen" (X) deaktiviert, weil ich erreichen möchte, dass der Anwender
beim beenden einen bestimmten Weg einhält. Klappt auch prima, nur das "X"
beim Hauptfenster krige ich nicht weg, da gibt es ja keine Eigenschaften.
Wie kann ich dort die Schaltfläche "Schliessen" abblenden ?

mfg
Konrad

Christa Kurschat

unread,
Apr 30, 2001, 6:19:49 AM4/30/01
to
Hallo Konrad,

"Konrad Bartl" <K.B...@zundm.de> schrieb im Newsbeitrag
news:9cjak2$imh$00$1...@news.t-online.com...

das geht IMHO nicht.
In der KnowHow.mdb gibt es aber eine Lösung, Form und Modul
"SchliessenNichtErlaubt".

Falls Du die noch nicht hast, über den Link in der Sig kannst Du sie
runterladen.
Falls das nicht geht, weil dort mögl. noch Baustelle herrscht,
versuch es hier: http://www.freeaccess.de/knowhow_mdb.html

Gruß
Christa
--
---------------------------------------------------------
Access-FAQ: http://www.donkarl.com
KnowHow.mdb: http://www.accessware.de
SQL-Server-FAQ: http://www.berndjungbluth.de
---------------------------------------------------------


Karl Donaubauer

unread,
Apr 30, 2001, 7:01:48 AM4/30/01
to
Konrad Bartl schrieb:

Du solltest dir gut überlegen, ob es klug ist, die Windows-Design-Standards
nicht einzuhalten. Das Handling des Hauptfensters ist dabei ein wichtiger
Punkt.
Klassische Methode ist nicht ohne Grund der Weg über ein verstecktes Formular
s. Access-FAQ 1.12 Schließen der Datenbank verhindern

Wenn du das aber partout willst, geht's per API.
Code-Beispiel dafür von Lyle Fairfield:
(in ein Standardmodul kopieren und Zeilenumbrüche im Posting korrigieren)

'ACCESS WINDOW MENUS
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function EnableMenuItem Lib "user32" _
(ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As
Long
Private Const MF_BYCOMMAND = &H0&
Private Const MF_ENABLED = &H0&
Private Const MF_GRAYED = &H1&
Private Const SC_CLOSE = &HF060&
Public Const WS_SYSMENU = &H80000
Public Const GWL_STYLE = (-16)
Public Const WS_CAPTION = &HC00000

Function EnableCloseButton()
Dim lngSystemMenuHandle As Long
lngSystemMenuHandle = GetSystemMenu(Access.hWndAccessApp, False)
Call EnableMenuItem(lngSystemMenuHandle, SC_CLOSE, MF_BYCOMMAND Or
F_ENABLED)
End Function
Function DisableCloseButton()
Dim lngSystemMenuHandle As Long
lngSystemMenuHandle = GetSystemMenu(Access.hWndAccessApp, False)
Call EnableMenuItem(lngSystemMenuHandle, SC_CLOSE, MF_BYCOMMAND Or
MF_GRAYED)
End Function
Function DisAbleTitleBarControls()
Dim lngAccessWindowHandle As Long, lngWindowStatus As Long
lngAccessWindowHandle = Access.hWndAccessApp
lngWindowStatus = GetWindowLong(lngAccessWindowHandle, GWL_STYLE)
lngWindowStatus = lngWindowStatus And (Not WS_CAPTION)
Call SetWindowLong(lngAccessWindowHandle, GWL_STYLE, lngWindowStatus)
End Function
Function EnableTitleBarControls()
Dim lngAccessWindowHandle As Long, lngWindowStatus As Long
lngAccessWindowHandle = Access.hWndAccessApp
lngWindowStatus = GetWindowLong(lngAccessWindowHandle, GWL_STYLE)
lngWindowStatus = lngWindowStatus Or WS_CAPTION
Call SetWindowLong(lngAccessWindowHandle, GWL_STYLE, lngWindowStatus)
End Function

--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com


Henry Habermacher [MVP Access]

unread,
Apr 30, 2001, 7:12:33 AM4/30/01
to
Hallo Karl

Karl Donaubauer schrieb in Nachricht
<9cjgle$dv3ui$1...@ID-46617.news.dfncis.de>...


>Wenn du das aber partout willst, geht's per API.
>Code-Beispiel dafür von Lyle Fairfield:

...

Genau ein solches Beispiel (von Johan Pumhösl, wenn ich mich nicht
täusche) habe ich letzthin auch gesehen, mir aber leider nicht gemerkt.
Wäre das nicht eine Ergänzung zur FAQ 4.35?
(Dann finde ich es wenn ich es brauche ;-))

Gruss
Henry


Karl Donaubauer

unread,
Apr 30, 2001, 7:48:36 AM4/30/01
to
Henry Habermacher schrieb:
> Karl Donaubauer schrieb:

> >Wenn du das aber partout willst, geht's per API.
> >Code-Beispiel dafür von Lyle Fairfield:
> ...
> Genau ein solches Beispiel (von Johan Pumhösl, wenn ich mich nicht
> täusche) habe ich letzthin auch gesehen, mir aber leider nicht gemerkt.
> Wäre das nicht eine Ergänzung zur FAQ 4.35?

Hallo, Henry!

Meine Vorrede bei dem Posting war nicht leichtfertig hingeschrieben.
Ich halte solches Vorgehen nur in Ausnahmefällen für gerechtfertigt -
das Abblenden von Windows-Standard-Elementen eigentlich nie.
s.a. die 20-Seiten Design-Vortrag von der AEK auf meiner Homepage

Per API kriegt man natürlich fast jede Schweinerei hin. Aber ich hab
eh schon wegen der FAQ mit dem Ausblenden des Hauptfensters
immer ein bissel Bauchweh.
Noch mehr in der Richtung sollte ich in den FAQ, glaube ich, eher
nicht "anpreisen".

--
Servus

Michael Singer

unread,
Apr 30, 2001, 8:41:27 AM4/30/01
to
Konrad Bartl schrieb:

Hallo Konrad,

Wenn du in deinem Hauptformular einen Button hast, mit dem du deine Anwendung
beendest
und gewisse Schritte ausführst, kannst du den Code auch in das Ereignis Beim
Schließen übernehmen.

Dieses Ereignis wird IMHO auch beim Schließen des Access-Fensters ausgeführt,
weil davor ja
automatisch dein Hauptformular geschlossen wird.

Insgesamt solltest du deine Anwendung aber sowieso so auslegen, daß mit den
Daten nichts passiert,
auch wenn ein Benutzer mitten im Programm irgendwo aussteigt, wäre ja das
Gleiche wenn dein Rechner
abstürzt.

lg Michael

mike.vcf

Konrad Bartl

unread,
Apr 30, 2001, 10:14:18 AM4/30/01
to

"Karl Donaubauer" <ad...@donkarl.com> schrieb im Newsbeitrag
news:9cjgle$dv3ui$1...@ID-46617.news.dfncis.de...

> Konrad Bartl schrieb:
> > Ich benutze MSACCESS 97 und habe in allen Formularen die Schaltfläche
> > "Schliessen" (X) deaktiviert, weil ich erreichen möchte, dass der
Anwender
> > beim beenden einen bestimmten Weg einhält. Klappt auch prima, nur das
"X"
> > beim Hauptfenster krige ich nicht weg, da gibt es ja keine
Eigenschaften.
> > Wie kann ich dort die Schaltfläche "Schliessen" abblenden ?
>
> Du solltest dir gut überlegen, ob es klug ist, die
Windows-Design-Standards
> nicht einzuhalten. Das Handling des Hauptfensters ist dabei ein wichtiger
> Punkt.

Herzlichen Dank für die Antwort,
die Bedenken teile ich. Mein Problem ist folgendes:
Meine Accessanwendung baut Modemstrecken auf und ich möchte halt sicher
sein, dass beim Beenden der Anwendung auch die Modemstrecken abbgebaut sind.
Dazu wollte ich sinngemäss eine Schaltfläche "Anwendung verlassen" benutzen.

mfg

Konrad


Konrad Bartl

unread,
Apr 30, 2001, 10:19:02 AM4/30/01
to

"Konrad Bartl" <K.B...@zundm.de> schrieb im Newsbeitrag
news:9cjak2$imh$00$1...@news.t-online.com...

Recht herzlichen Dank für Eure vielen Anregungen, ich habe jetzt ertmal
einiges zum Probieren..... :-))

mfg
Konrad

Henry Habermacher [MVP Access]

unread,
Apr 30, 2001, 11:28:27 AM4/30/01
to
Hallo Karl

Karl Donaubauer schrieb in Nachricht

<9cjjdd$e370f$1...@ID-46617.news.dfncis.de>...


>Per API kriegt man natürlich fast jede Schweinerei hin. Aber ich hab
>eh schon wegen der FAQ mit dem Ausblenden des Hauptfensters
>immer ein bissel Bauchweh.

Stehe ich voll dahinter. Trotzdem gibt es einfach dann und wann äussere
Zwänge (zB. gut betuchte Kunden ;-) ), die ein solches Verhalten
wünschen. Meist sind es eher ältere Kunden, die sich an Grosssystem
Verhalten gemäss 3270 Terminal Emulation gewöhnt sind und mit einem MDI
à la Access wenig am Hut haben, rsp. damit nicht umgehen können.

Ich werde mir also dieses Posting selber aufbewahren :-)

Gruss
Henry


Henry Habermacher [MVP Access]

unread,
Apr 30, 2001, 11:32:07 AM4/30/01
to
Hallo Konrad

Konrad Bartl schrieb in Nachricht <9cjs1g$iqn$06$1...@news.t-online.com>...


>die Bedenken teile ich. Mein Problem ist folgendes:
>Meine Accessanwendung baut Modemstrecken auf und ich möchte halt sicher
>sein, dass beim Beenden der Anwendung auch die Modemstrecken abbgebaut
sind.
>Dazu wollte ich sinngemäss eine Schaltfläche "Anwendung verlassen"
benutzen.

Hier scheint mir nun doch der Ansatz eines versteckten Formulars besser
geeignet zu sein. Sobald Access verlassen wird - Egal ob durch
Schliessen Schaltfläche oder durch einen Schliessen Button, wird auch
dieses Form geschlossen. Im Close Ereignis kannst Du nun sicherstellen,
dass die Modemstrecken wieder sauber abgebaut und die Ressourcen wieder
freigegeben werden.

Gruss
Herny


Konrad Bartl

unread,
May 2, 2001, 5:48:03 AM5/2/01
to

"Henry Habermacher [MVP Access]" <he...@psp-online.com> schrieb im
Newsbeitrag news:9ck0jf$ec47t$1...@ID-30649.news.dfncis.de...
Vielen Dank,
ich denke so werden wir vorgehen... :-)

mfg
Konrad


0 new messages