mfg
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
---------------------------------------------------------
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
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
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
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
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
Recht herzlichen Dank für Eure vielen Anregungen, ich habe jetzt ertmal
einiges zum Probieren..... :-))
mfg
Konrad
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
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
mfg
Konrad