Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Formular ohne Accessfenster A03/Win7

Begonnen von MaxP, August 15, 2018, 16:42:50

⏪ vorheriges - nächstes ⏩

MaxP

Hallo zusammen,

dass man ein Formular ohne übriges Lametta starten kann, indem bei Start... die entsprechenden Einstellungen getätigt werden, weiß ich inzwischen. Ebenfalls habe ich die Desktop-Verknüpfung auf minimert starten gestellt, bei den Formularen PopUp aktiviert und bei Form open den Befehl RunCommand acCmdAppMinimize eingegeben. Funktioniert auch erst, aber...

Ich habe ein sehr kleines Formular zur Zeiterfassung (Stopuhr) erstellt, dass praktisch den ganzen (Arbeits-)tag am Bildschirmrand oder auf dem 2. Display geöffnet sein soll. Gelegentlich wird es durch andere Fenster überdeckt oder minimiert. Wenn ich dann wieder dran will und über die Taskleiste gehe, geht das gesamte Accessfenster wieder auf.
Wie kann ich das verhindern?
Es soll bei dem einzelnen Formular bleiben. Das Accessfenster sollte auch nicht in der Taskleiste minimiert sein.

Gruß
Max
Win 10 pro 64 bit, Access 2003

PhilS

Schau dir mal mein SystraySample an. Wenn ich mich richtig erinnere, enthält das eigentlich im wesentlichen die gewünschten Features.

Als Zusatzinformation sei hier noch auf FAQ 1.11 Access-Hauptfenster ausblenden verwiesen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MaxP

Hallo,
danke für die schnelle Antwort!

Habe mir deine Beispiel-DB angeschaut. Sind denn so viele Codes bzw. Module erforderlich, um nur das Accessfenster dauerhaft zu schließen? Oder auf welche Codes kann ich verzichten? Könnte ich diese ohne Anpassung 1:1 übernehmen?

Deshalb habe ich einmal den API-Code von Karl 1:1 ausprobiert:

Mein Hauptformular lässt sich zwar öffnen, nachdem das AC-Fenster kurz geöffnet und wieder geschlossen wird. Der Rahmen des Formulars wird allerdings transparent dargestellt, bis man mit der Maus in den Desktop klickt. Okay.

Schlimmer jedoch: Ich kann ein weiteres Formular nicht mehr öffnen, das ich normalerweise über einen Button öffne.

Wenn ich das Hauptformular über das rote Kreuz-Symbol schließe, ist die DB zwar noch ausgeblendet aber geöffnet, und ich komme nicht mehr dran. (außer mit dem Taskmanager zum Beenden des Prozesses). Mein Beenden-Button funktioniert hingegen.

Was muss ich ändern?

Gruß
Max
Win 10 pro 64 bit, Access 2003

DF6GL

Hallo,

in der FAQ 1.11 steht alles nötige drin, speziell die Steuerung der Formulare aus dem Start-Formular heraus und die Einstellung der weiteren Forms , bzw. Reports z. B. auf Popup.

ZitatDer Rahmen des Formulars wird allerdings transparent dargestellt

Das versteh ich nicht genau... Was heißt "transparent"?  Wenn das Form den Fokus erhält, wird der Rahmen und die Titelleiste entspr. den eingestellten Windows-Farben eingestellt.

MaxP

Hallo,
ich habe alle Formulare auf Popup umgestellt und den Code wie beschrieben eingegeben. Berichte existieren nicht. Ich weiß nicht, warum sich das 2. Form aus dem Hauptform nicht öffnen lässt. Im normalen Modus funzt es.

Mit transparentem Rahmen meine ich, dass der Rahmen des Hauptformulars direkt nach dem Start unsichtbar ist. Evtl. fehlt dem Form der Focus.

Noch mal eine Frage zur Beispiel-DB Systray von PhilS:
Reicht es, wenn nur die Prozeduren der Formulare angepasst werden (Formularnamen, etc.) ? So dass man die Module oder nur einzelne davon 1:1 übernehmen kann?

Gruß
Max
Win 10 pro 64 bit, Access 2003

DF6GL

Hallo,

vermutlich ist

--  Das zweite Form nicht auf Popup eingestellt und wird im unsichtbaren Access-Fenster dargestellt.

-- Die Form-Eigenschaft "Rahmenart" beim Startform auf "keine" eingestellt.

markusxy

Zitat von: MaxP am August 16, 2018, 17:41:19
Hallo,
ich habe alle Formulare auf Popup umgestellt und den Code wie beschrieben eingegeben.

Du musst jedes Formular nach dem Öffnen mit WindowShow sichtbar setzen.
Hast du das gemacht?

MaxP

Hallo,
ja, das war's. Habe die Codes auch an die anderen Formulare angefügt und nun funktioniert es, wie es soll.

Das kleine Problem mit dem Rahmen, dessen Eigenschaft Rahmenart auf veränderbar steht, tritt nun deutlich seltener auf. Und wenn, dann ist nur ein kleiner Teil des Rahmens unsichtbar. Der Fokus lag übrigens bereits im 1. Feld des Formulars.

Danke für Eure Hilfe!

Gruß
Max
Win 10 pro 64 bit, Access 2003

markusxy

Zitat von: MaxP am August 17, 2018, 11:05:20
Das kleine Problem mit dem Rahmen, dessen Eigenschaft Rahmenart auf veränderbar steht, tritt nun deutlich seltener auf. Und wenn, dann ist nur ein kleiner Teil des Rahmens unsichtbar.

Beobachte mal ob das bei allen Formularen oder nur beim Ersten auftritt.

MaxP

Hallo,
nach längerer Abwesenheit habe ich nun die Erfahrung gemacht, dass das "einfache" Ausblenden des ACC-Fensters es nicht bringt. Sobald ich mit dem Formular arbeiten will, öffnet sich in irgendeiner Weise das ACC-Fenster wieder.

Deswegen habe ich mir mal das Demo SystraySample von PhilS angeschaut. Danke dafür. Für meine Verhältnisse recht komplex!

Ich möchte beim Starten von ACC nur mein kleines Zeitformular geöffnet haben und mit arbeiten können. Per Button können weitere Formulare geöffnet werden.

Wie gehe ich nun vor? Kopiere ich einfach alle Module in meine DB? Ist das Form frmSystray auch erforderlich? Muss ich es zum Betrieb meines Forms unbedingt aufrufen oder dient es nur der Einstellung? Welche Prozeduren müssen ggfs. an mein Form gehängt werden? Oder sollte ich umgekehrt meine Objekte in die SystraySample-DB kopieren?

Übrigens besteht das Rahmenproblem nicht mehr.

Gruß
Max
Win 10 pro 64 bit, Access 2003

markusxy

Zitat von: MaxP am September 17, 2018, 16:50:46...die Erfahrung gemacht, dass das "einfache" Ausblenden des ACC-Fensters es nicht bringt. Sobald ich mit dem Formular arbeiten will, öffnet sich in irgendeiner Weise das ACC-Fenster wieder.

Deswegen habe ich mir mal das Demo SystraySample von PhilS angeschaut.

Das Hauptform blendet sich also durch das Handling mit deinem Form von selbst wieder ein?

Da das Systray Beispiel beim Ausblenden nichts anderes macht, wäre es doch interessant zu sehen, ob du ein Beispiel hochladen könntest, an dem das Verhalten reproduzierbar wäre.

PhilS

Zitat von: MaxP am September 17, 2018, 16:50:46
Deswegen habe ich mir mal das Demo SystraySample von PhilS angeschaut. Danke dafür. Für meine Verhältnisse recht komplex!
Das Beispiel ist vor vielen Jahren entstanden und leider nicht mit dem Gedanken, wie die Funktionalität gut in einer andere Anwendung übernommen werden kann.
Ich habe schon seit Monaten vor, eine überarbeitete Fassung zu erstellen, die einige Probleme behebt und vor allem die Kernfunktionalität besser kapselt.  Bisher habe ich noch keine Zeit dazu gefunden.
Zitat von: MaxP am September 17, 2018, 16:50:46Wie gehe ich nun vor? Kopiere ich einfach alle Module in meine DB?
Ja.
Zitat von: MaxP am September 17, 2018, 16:50:46Ist das Form frmSystray auch erforderlich? Muss ich es zum Betrieb meines Forms unbedingt aufrufen oder dient es nur der Einstellung? Welche Prozeduren müssen ggfs. an mein Form gehängt werden?
Jein.
Das Form selbst eher nicht, aber Teile des Codes.

Im Beispiel hat das Form leider zwei Zwecke (einer zuviel!).
1.) Es dient zu Steuerung bzw. Konfiguration der Demo-Funktionalität. Das sind die Ergeinisprozeduren für die Button-Click-Ereignisse (cmd..._Click). Diese solltest du nicht direkt übernehmen, sondern die Funktionalität sollte dann, einschließlich der Werte, die man in dem Beispiel in dem anderen Steuerelementen einstellen kann, aus dem Kontext deiner Anwendung aufgerufen werden.
2.) Aller übriger VBA-Code in dem Form dient zur Implementierung der Kernfunktionalität (SysTray). Diesen solltest du in das Formular deiner Anwendung übernehmen, das primär auf die SysTray-Interaktion reagieren soll.
Zitat von: MaxP am September 17, 2018, 16:50:46Oder sollte ich umgekehrt meine Objekte in die SystraySample-DB kopieren?
Nein, würde ich eher nicht machen.

PS: (Nachtrag!)
Zu spät habe ich gelesen, dass du ursprünglich nur daran interessiert warst, dass Access-Fenster auszublenden. Dafür sollte bereits das Modul modAPIWindows ausreichen. Die Aufrufe von ShowWindow sollten dann aus dem Kontext deiner Anwendung erfolgen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MaxP

Hallo zusammen,

vielen Dank für eure schnellen Antworten.

Im Anhang findet ihr meine kleine DB. Ihr werdet euch schnell von meinen miserablen VBA-Kenntnissen überzeugen können. ???

Nachdem ich den Code zum Verstecken des ACC-Fensters vor rd. 4 Wochen auskommentiert habe, um das Programm schon mal nutzen zu können, habe ich noch einige kleine Format-Änderungen an den Forms durchgeführt, die das Verhalten mit aktivierten Codes evtl. etwas ändert. (z.B. Fenstergröße/-Art/-Pos.)

Dein Nachtrag, PhilS, klingt vielversprechend, da weniger Arbeit und das Ganze etwas überschaubarer macht. Es sei denn, Markus sollte Recht mit seiner Aussage behalten.

Wenn ShowWindow nur dafür da ist, dass ACC-Fenster wieder einzublenden, könnte das im Prinzip doch auch ausschließlich ? über ein Button in einem Einstellungs-Menü realisiert werden, oder? Obwohl ich gesehen habe, dass an verschiedenen Stellen des Originalcodes die ShowWindow-Anweisung steht.

Wie werden denn die anderen Funktionen in dem Modul modAPIWindows aufgerufen? Auch aus dem Formular?

Gruß
Max
Win 10 pro 64 bit, Access 2003

MzKlMu

Hallo,
warum sind keine Beziehungen angelegt?
In einer Datenbank sind die Beziehungen das A+O und unerlässlich.
Außerdem, sind die Beziehungen in einem Beispiel besonders wichtig. Bei einer fremden DB öffne ich erst das Beziehungsfenster, sind keine da, mache ich die DB einfach wieder zu. Außerdem hagelt es Fehlermeldungen, was der Bereitschaft sich das Beispiel anzusehen auch nicht förderlich ist.

Was mir aber trotzdem aufgefallen ist, sind die vielen Feldnamen mit dem Bindestrich. Die werden Dich noch zur Weißglut bringen. Die solltest Du schleunigst entfernen, trotz des Aufwands. Du brauchst sonst immer ein [] Klammerpaar an Stellen, die Du gar nicht vermutest.
Gruß Klaus

MaxP

Hallo,
sorry, aber bei mir gibt es keine Fehlermeldungen. Ich arbeite ja bereits seit ein paar Wochen damit. Nur eben mit sichtbarem ACC-Fenster. Das könnten evtl. Fehlermeldungen zur externen Hintergrunddatei o.ä. sein. Bei einigen Unterfunktionen (die aber mit meinem Problem nichts zu tun haben) greife ich auf eine andere DB zu.

Ich hatte gedacht, dass mein ursprüngliches Problem unabhängig davon ist, ob das Form gebunden oder ungebunden ist. Die Tabellenstruktur ist ja recht überschaubar.

I. d. R. arbeite ich bei Feldnamen mit Unterstrichen. Früher habe ich Bindestriche eingesetzt und weiß heute, dass das problematisch ist. Aber die DB arbeitet u.a. mit einer alten DB zusammen, in der noch tlw. Feldnamen mit Bindestrich vorkommen. M.E. sollte das aber in diesem Fall nicht zu Fehlern führen.

Gruß
Max
Win 10 pro 64 bit, Access 2003