Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  VBasic / vb.net / vbs / wsh
  Dialogposition speichern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Dialogposition speichern (1118 mal gelesen)
Dilpschi
Mitglied
Ing. Verfahrenstechnik


Sehen Sie sich das Profil von Dilpschi an!   Senden Sie eine Private Message an Dilpschi  Schreiben Sie einen Gästebucheintrag für Dilpschi

Beiträge: 18
Registriert: 29.04.2013

erstellt am: 24. Jul. 2015 19:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Allerseits,

ich habe ein kleines VBA Tool in Inventor für eine einfache Positionierung und Parameteränderung von Bauteilen geschrieben.
Das ganze wird nach Selektion des Bauteiles gestartet. Nach Fertigstellung wird es geschlossen und danach wieder mit einem anderen selektierten Bauteil gestartet.
Das Userform hat eine feste Position - und generell die falsche ;-)) - es steht immer im Weg.

Kann man daher per Macro die voreingestellten .LEFT und .TOP Vorgaben des Userforms ändern? Diese werden bei neustart des Dialogs ja immer wieder zurückgesetzt.
Auch eine Zwischenpeicherung in 2 verdeckte Labels bringt nix, weil diese auch nicht gespeichert werden und nach Neustart des Dialogs wieder den voreingestellten Wert haben.
Schön wäre es, wenn man das Userform an eine bestimmte Stelle zieht und dann per commandbutton die neue Position generell festlegt.

VG Tom

------------------
Einfach mal rechts fahren....

[Diese Nachricht wurde von Dilpschi am 24. Jul. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2014
Plateia, Canalis
Visual Basic

erstellt am: 24. Jul. 2015 23:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dilpschi 10 Unities + Antwort hilfreich

Da fallen mir spontan mehrere Möglichkeiten ein:
- Speichern in einer Datei (gleiches Verzeichnis wie Zeichnung)
- Hinterlegen in der Registry
- Erzeugen eines Xdata Eintrags mit Namen Deiner Anwendung

Beim Laden wäre dann zu prüfen ob die entsprechende Variante vorhanden ist

Sind zwar einfache Beispiele, bestimmt gibt es noch bessere, aber einfach zu proggen

Grüße
Klaus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 27. Jul. 2015 08:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dilpschi 10 Unities + Antwort hilfreich

Du kannst die Werte auslesen im code der Form, als Me.Left, Me.Top, Me.Width und Me.Height und dann irgendwo /irgendwie (s.o.) zwischenspeichern. Das Speichern solltes du in der "Sub UserForm_QueryClose" erledigen, die wird beim Schließen der Form durchlaufen.

Beim nächsten Start in der "Sub UserForm_Initialize()" dann wieder laden und den Werten zuweisen.
Darauf achten: Die Positionszuweisung funktioniert nur, wenn du in den Eigenschaften der Form den Wert für "StartUpPosition" auf "0 - Manuell" gesetzt hast.

Die "Sub UserForm_Initialize()" wir nur beim Erzeugen der Form aufgerufen, wenn du diese Form also nur versteckst und dann wieder anzeigst, wird das nur 1x durchlaufen. Dann solltest du das möglicherweise in die "Sub UserForm_Activate()" verlegen.
[Edit]Der Absatz macht keinen Sinn, beim Verstecken/Ausblenden einer Form ändern sich ja deren Position oder Größe nicht^^  [/Edit]

------------------
Klaus

www.al-ko.com | mein Gästebuch

[Diese Nachricht wurde von KMassler am 27. Jul. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dilpschi
Mitglied
Ing. Verfahrenstechnik


Sehen Sie sich das Profil von Dilpschi an!   Senden Sie eine Private Message an Dilpschi  Schreiben Sie einen Gästebucheintrag für Dilpschi

Beiträge: 18
Registriert: 29.04.2013

Factory Design Suite 2015, Win 7 64, I7 4820K/32GB RAM/Nvidia K4200

erstellt am: 28. Jul. 2015 19:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Klaus,

das habe ich schon probiert, aber mit dem Schließen des Dialogs werden auchg die Werte wieder zurückgesetzt.
Ich habe 2 labels "versteckt", denen ich die 2 Werte zuweise (in QueryClose), aber da ist das Formular ja noch präsent.
Beim Neustart werden auch diese beiden Werte wieder zurückgesetzt. Ich kann die Vorgabeform in dem Sinne nicht ändern.
Ich hatte eigentlich irgendetwas im Objekt ThisApplication oder Document gesucht, wo das Formular verankert ist und ich direkt drauf zugreifen kann.
Im Objektpfad: ThisApplication.VBAProjects(1).InventorVBAComponents(2) (mein Beispiel) komme ich ja an das Userform ran.
Ich finde nur nicht die Deklarationen zum Userform, wie Top, Left etc., welche ich auch von außen durch ein Makro ändern könnte. 


VG Tom

------------------
Einfach mal rechts fahren....

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



IT-Systemadministrator (m/w/d)

Von der ersten Idee, über die gesamte Entwicklungsphase und Serienfertigung: Wir begleiten unsere Kunden über den gesamten Prozess - WIR das sind weltweit unsere mehr als 43.000 Mitarbeitenden an 115 Fertigungsstandorten und 13 F&E-Zentren in 24 Ländern weltweit. Unser Anspruch sind innovative Designs für Karosserie-, Fahrwerk- und Mechanik-Komponenten die Fahrzeuge sicherer und leichter machen, ...

Anzeige ansehenSystemadministration, Netzwerkadministration
KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2657
Registriert: 06.11.2000

erstellt am: 29. Jul. 2015 08:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dilpschi 10 Unities + Antwort hilfreich

Der Code der Form:

Code:
Const Configfilename = "democonfig.txt"

Private Sub CommandButton1_Click()
     Unload Me
End Sub

Private Sub UserForm_Initialize()
    Dim filename As String
   
    Me.StartUpPosition = 0 'manuelle Position
    'Form wird initialisiert, dazu werden die Startposition und Größe aus Datei gelesen
    'Existiert die Datei?
    filename = Dir(Environ("APPDATA") & "\" & Configfilename)
    If filename <> "" Then
        Open Environ("APPDATA") & "\" & filename For Input As #2
       
        Line Input #2, l
        Line Input #2, t
        Line Input #2, w
        Line Input #2, h
    
        Close #2
       
        Me.Left = CDbl(Replace(l, ".", ","))
        Me.Top = CDbl(Replace(t, ".", ","))
        Me.Width = CDbl(Replace(w, ".", ","))
        Me.Height = CDbl(Replace(h, ".", ","))
       
    End If
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    'Form wird geschlossen, Position und Größe speichern:
    On Error Resume Next
    Open Environ("APPDATA") & "\" & Configfilename For Output As #1
    Write #1, Me.Left
    Write #1, Me.Top
    Write #1, Me.Width
    Write #1, Me.Height
    Close #1
End Sub


Die Form enthält noch einen Button CommandButton1 zum Schließen.

Ich speichere Position und Größe in der Datei %appdata%\democonfig.txt. Das passiert beim Schließen des Fensters in der Sub UserForm_QueryClose.

Beim Initialisieren (1. Öffnen der Form) wird diese Datei wieder ausgelesen, dabei musst du darauf achten, dass die Koordinaten als Double gespeichert wurden, mit . als Trennzeichen. Um die wieder zu verwenden, musst du den Punkt erst durch , ersetzen. Das passiert hier bei der Zuweisung zu Me.Left usw.

Alternativ (und international sicherer) könntest du die Werte vor dem Speichern erst runden (auf ein halbes Pixel kommt es nicht an), dann gibts keine Probleme mit dem Dezimalzeichen.

[Edit]die Zeilen mit me.width und me.height kannst du wohl weglassen, die Fenstergröße lässt sich eh nicht ziehen.[/Edit]
------------------
Klaus

www.al-ko.com | mein Gästebuch

[Diese Nachricht wurde von KMassler am 29. Jul. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz