Prb Benutzerformular

Hallo

 

In Solidworks habe ich eine Makroschaltfläche erstellt.

 

Wenn ich auf die Schaltfläche klicke, wird das Benutzerformular hinter SolidWorks gestartet, was für den Benutzer ärgerlich ist, nach dem Benutzerformular suchen zu müssen. (Benutzerform.show)

Sie müssen dann das SOLIDWORKS Fenster minimieren und dann erneut öffnen, damit das Benutzerformular angezeigt wird.

 

Aber erst beim ersten Öffnen tritt dieses Problem auf...

 

Irgendeine Idee?

 

Danke im Voraus,

 

JB

Ich weiß nicht allzu viel über Makros, aber vielleicht der Anfang einer Antwort hier

http://forum.hardware.fr/hfr/Programmation/VB-VBA-VBS/premier-plan-userform-sujet_77278_1.htm

 

oder die

http://www.excel-downloads.com/forum/200197-garder-un-userform-au-premier-plan-de-lecran-windows.html

 

Ich hoffe, ich habe Ihnen nützlich gewesen

 

Glücklicher Vater

Hallo, wir sollten diese Zeile hinzufügen:

 

Application.WindowState = xlMinimiert
UserForm1.Zeigt wbmodeless an

 

 

Halten Sie uns auf dem Laufenden! ;)

Hallo

 

Eine Strecke zum Testen:

 

Privater Sub UserForm_Activate()

Mit mir

     . StartUpPosition = 3

     . Breite = Anwendung.Breite

     . Höhe = Anwendung.Höhe

     . Links = 0

     . Oben = 0

Enden mit

Ende Sub

 

Feder:

http://www.commentcamarche.net/forum/affich-27509585-userform-reste-en-arriere-plan

 

Stellen Sie sicher, dass die Benutzerformulareigenschaft ShowModal = True ist.

 

Aber es ist ein bekannter PB bei einigen Versionen, Sie müssen durch Windows-APIs gehen, um dies zu erzwingen

Das Fenster im Vordergrund

 

Im Abschnitt "Deklaration"

 

Private Deklarieren der Funktion FindWindow lib "user32.dll" aka "FindWindowA" ( _ ByVal lpClassName als String, _ ByVal lpWindowName als String) so lang

Private Declare Function SetWindowPos Lib "user32" ( _ ByVal hwnd As Long, _ ByVal hWndInsertAfter As Long, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal cx As Long, _ ByVal cy As Long, _ ByVal wFlags As Long) As Long

Privater Const HWND_TOPMOST = -1

Privater Const HWND_NOTOPMOST = -2

Privater Const SWP_NOMOVE = &H2

Privater Const SWP_NOSIZE = &H1

Privat mlHwnd so lange

 

und in der Aktivierung des Formulars

 

SetWindowPos mlHwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE Gold SWP_NOSIZE

7 „Gefällt mir“

Vielen Dank für Ihre Antworten,

 

Lucas

I ==>   . Breite = Anwendung.Breite

wodurch ein Laufzeitfehler '438' erstellt wurde

Eigenschaft oder Methode, die von diesem Objekt nicht unterstützt wird

 

Jfaradon

SetWindowPos (Englisch)

macht mich untergeordnet oder Funktion nicht definiert

 

Bart

wbmodeless

Variable nicht definiert

 

Auf der anderen Seite, wenn SOLIDWORKS jetzt geöffnet ist, wenn ich Windows (Internet, Word, Excel...) aktiviere, bleiben sie zurück.

 

Ich denke, es ist eine der Lösungen, die einen Parameter (Jfaradon oder Lucas) geändert haben

Es stimmt, dass mein Kopieren und Einfügen etwas schnell war; Zusätzlich war es notwendig, in der Syntax 64 zu korrigieren

 

Ich, aber hier ist ein Beispiel für ein Makro mit dieser Verwaltung über die Windows-API des Vordergrunds


exemple_topmost.zip
6 „Gefällt mir“

Hallo

 

Versuchen Sie es mit einem kleinen:

Ich.topmost=wahr

 

Bei meinen kleinen Apps in VB.Net funktioniert es.

Herzliche Grüße.

 

Ich habe vergessen zu erwähnen, dass ich in VBA programmiere.

 

Vielleicht funktionieren diese Codes deshalb nicht...

 

Die SOLIDWORKS Hilfe kennt weder "topmost" noch "SetWindowPos". 

 

Klassisch, aber es sollte Ihr Problem lösen:

http://support.microsoft.com/kb/184297/fr

FP