Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: MaxP am August 15, 2018, 16:42:50

Titel: Formular ohne Accessfenster A03/Win7
Beitrag von: MaxP am August 15, 2018, 16:42:50
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
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: PhilS am August 15, 2018, 20:51:14
Schau dir mal mein SystraySample  (https://codekabinett.com/page.php?Theme=10&Lang=1#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 (http://www.donkarl.com?FAQ1.11) verwiesen.
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MaxP am August 16, 2018, 12:33:11
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
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: DF6GL am August 16, 2018, 14:29:47
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.
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MaxP am August 16, 2018, 17:41:19
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
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: DF6GL am August 16, 2018, 18:30:56
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.
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: markusxy am August 16, 2018, 19:00:47
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?
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MaxP am August 17, 2018, 11:05:20
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
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: markusxy am August 17, 2018, 12:41:17
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.
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MaxP am September 17, 2018, 16:50:46
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
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: markusxy am September 17, 2018, 18:07:24
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.
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: PhilS am September 17, 2018, 18:30:20
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.
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MaxP am September 18, 2018, 10:57:08
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
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MzKlMu am September 18, 2018, 15:00:59
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.
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MaxP am September 19, 2018, 09:57:16
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
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MzKlMu am September 19, 2018, 10:50:11
Hallo,
dass bei Dir kein Fehlermeldungen kommen ist klar, aber ich habe ja nicht die gleichen Pfade und Bilder wie Du. Diese Verweise solltest Du bei einem Beispiel löschen.

Außerdem, habe ich von gebunden/ungebunden nichts gesagt, ich sprach von Beziehungen, das hat gebunden/ungebunden nichts zu tun.
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: PhilS am September 19, 2018, 14:52:29
Zitat von: MaxP am September 18, 2018, 10:57:08Wie werden denn die anderen Funktionen in dem Modul modAPIWindows aufgerufen? Auch aus dem Formular?
Die anderen Funktionen in dem Modul modAPIWindows sind nur Hilfsfunktionen, die nicht unbedingt zwingend erforderlich sind. Ob du diese benötigst, hängt von deinen Anforderungen und von deiner eigenen Anwendungslogik ab.
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: daolix am September 20, 2018, 10:56:43
Hallo
wenn ich deine DB mit der Showwindow kombo teste funzt es bei mir, ich kann iwi mit den Formularen arbeiten. Aber wie wie schon von Phil erwäht, mußt du auch eine Art Logik einbauen damit die Anwendung nicht in den nichtmehr erreichbaren hintergrund wandert. GGf wäre es auch hilfreicher das jedes Formular ein Button auf der Taskleiste setzt.
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MaxP am September 20, 2018, 12:09:37
Hallo zusammen,

nachdem ich stundenlang versucht habe, die Module und Prozeduren aus der DB Systray für meine Zwecke zu dezimieren und letztendlich gescheitert bin, habe ich mir noch einmal den ursprünglichen Code aus FAQ 1.11 vorgenommen und ihn wieder aktiviert und noch mal getestet.

Inzwischen funktioniert er, bis auf eine Kleinigkeit: Beim Starten ist häufig (nicht immer) das Startform ohne Rahmen dargestellt und nicht verschiebbar. Klicke ich irgendwo auf den Desktop oder öffne ein Unterform über den Button sind alle Forms wieder normal und verschiebbar. (s. Anhänge)

Gibt es dafür eine Lösung? Auch wäre es schön, wenn das Startform an der Stelle des Desktops öffnet, an der es vorher geschlossen wurde.

Wo im Code kann ich ansonsten die Pos. des Forms verändern.

Gruß
Max

Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: Lachtaube am September 20, 2018, 12:52:34
@Max,

ich würde versuchen, mit einem Oneshot Timer das Formular einmalig zum Neuzeichnen zu bewegen. Dazu legst Du ein Zeitgeberintervall in den Formulareigenschaften fest - mit den Werten müsstest Du experimentieren. Anfangs würde ich 500 für eine halbe Sekunde einstellen und testen.

Private Sub Form_Timer()
   'Zeitgeber wieder abschalten
   Me.TimerInterval = 0
   Me.Repaint
End Sub
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: markusxy am September 20, 2018, 13:25:37
@Phils
Das Problem wenn sich das Icon nicht in der Taskleiste sondern in der "overflow section" befindet wäre recht einfach zu lösen.
Wenn das Move Event ausgelöst wird, prüfen ob sich die Maus über dem Access Formular befindet.

Private Sub Detailbereich_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)


    ' Check if the mousepointer is above the taskbar
    Dim p As POINTAPI
    GetCursorPos p
    If WindowFromPoint(p.x, p.y) <> Me.hWnd Then
         ....
    End If

End Sub


LG Markus
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MaxP am September 20, 2018, 15:21:26
@ Lachtaube

da mein Form zur Zeiterfassung genutzt wird, existiert bereits das Ereignis Bei Zeitgeber (z.B. Me![Akt_Zeit] = Format(Now, "h:nn:ss")) mit einem Intervall von 1000.

Kann ich deine Anweisung Me.Repaint dazuschreiben oder kollidieren diese Anweisungen womöglich?

Gruß
Max
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: Lachtaube am September 20, 2018, 17:09:50
Dann musst Du dafür sorgen, dass die Anweisung nur einmal gestartet wird, weil sie das Neuzeichnen des Fensters beauftragt, was im Sekundentakt eher unangemessen ist.
Private Sub Form_Timer()
   Static Repainted As Boolean

   If Not Repainted Then
      Me.Repaint
      Repainted = True
   End If

   'hier dann Deinen Code folgen lassen
End Sub
Titel: Re: Formular ohne Accessfenster A03/Win7
Beitrag von: MaxP am September 21, 2018, 17:41:09
Das war es leider nicht. Der Eintrag hat keinen Unterschied gemacht. Auch bei einer Reduzierung des Intervalls von 1000 auf 500 gab es keine Änderung.

Ich verstehe nicht, warum mal das Form vollständig und mal unvollständig dargestellt wird.