| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Eigenschaftspalette ändern/ VBA Formulare immer sichtbar (1748 mal gelesen)
|
archstudent Mitglied

 Beiträge: 29 Registriert: 06.02.2005 2 x 2,8 Ghz Xeon 2 GB RAM 500 GB HD 23" Flatscreen
|
erstellt am: 29. Okt. 2005 14:32 <-- editieren / zitieren --> Unities abgeben:         
|
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 29. Okt. 2005 16:07 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hallo Dominik, wenn ein VBA Formular einmal geladen ist, ist es so lange sichtbar bis es entweder entladen (unload form) oder verborgen (form.hide) wird. Wird das Formular mit "Form.show" oder "Form.show 1" geladen, ist es im Modalen Zustand, das heisst die Programmausführung und somit auch AutoCAD müssen warten bis ds Formular wieder geschlossen wird. Wird das Formular mit "Form.Show 0" geladen, ist es immer sichtbar aber die Ausführung des Programmes geht weiter. Das könnte man dazu benutzen um ein eigenes Eigenschaftsfenster anzeigen zu lassen. Mit dem entsprechenden Event bei "Thisdrawing" kann auf veränderte Benutzerangaben und Befehle reagiert werden. Stelli ------------------ Warum lisp'eln wenn's auch anders geht.  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archstudent Mitglied

 Beiträge: 29 Registriert: 06.02.2005 2 x 2,8 Ghz Xeon 2 GB RAM 500 GB HD 23" Flatscreen
|
erstellt am: 31. Okt. 2005 09:06 <-- editieren / zitieren --> Unities abgeben:         
|
ThomDD Mitglied

 Beiträge: 14 Registriert: 19.03.2007
|
erstellt am: 18. Sep. 2007 10:50 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Aber wie bekomme ich ein Formular, dass ich mit der Methode Show anzeigen lasse, wieder dazu, dass es verschwindet Mit der Hide-Methode wird es irgendwie nicht ausgeblendet! Aber wie dann? Erst wenn ich auf den Schließen-Button (rechts in der Titelleiste) des Formulars klicke, verschwindet das Formluar und die Programmausführung wird fortgesetzt. Will das Formular dazu nutzen, dass es vor einer umfangreichen Zeichnungsänderung eingeblendet wird (Label "Bitte warten...Elemente werden bearbeitet...") und nach der Bearbeitung das Formular wieder ausgeblendet wird. Thom
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 18. Sep. 2007 11:01 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hi Thom, du kannst das Formular mit me.hide ausblenden bzw. mit unload me aus dem Speicher entfernen und ausblenden. Für das bitte warten kannst du ja ein Formular mit einem Progress-Bar erstellen und wie Folgt aufrufen: Zitat: Wird das Formular mit "Form.Show 0" geladen, ist es immer sichtbar aber die Ausführung des Programmes geht weiter. Das könnte man dazu benutzen um ein eigenes Eigenschaftsfenster anzeigen zu lassen.
Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomDD Mitglied

 Beiträge: 14 Registriert: 19.03.2007
|
erstellt am: 18. Sep. 2007 12:19 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1776 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 28. Mrz. 2008 16:47 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hallo, ich wärme zwar ungern alte Sachen auf, aber es passt glaube ich ganz gut rein. Ich habe ein Problem mit dem Sichtbarmachen einer Form, die eine Progressbar beinhaltet: Code:
ProgressBar.Show False
in ACAD 2004 aufwärts funktioniert es , die ProgressBar wird angezeigt, das Programm läuft weiter. in ACAD 2000 kommt aber die Meldung "Falsche Anzahl an Argumenten oder ungültige Eigenschaftszuweisung" und das Programm bleibt stehen. Wenn ich das False durch 0 ersetze ist das Ergebnis dasselbe. Unter 2002 habe ich es nicht getestet. Wer kann mir weiterhelfen??? ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 28. Mrz. 2008 19:01 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hi Joern, Ich denke, das es damit zusammenhängt, das AutoCAD 2000 und vielleicht auch noch 2000i VB5 als Basis für die VBA Schnittstelle nutzen und die neueren Versionen auf VB6 basieren. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1776 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 29. Mrz. 2008 13:42 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hallo Carsten, dann müsste es aber doch ein Möglichkeit geben, auf einem anderen Wege zum Ziel zu kommen, so daß es in 2000 und aufwärts läuft. Wie ist der Weg in VB5 eine Form mit einer ProgressBar anzuzeigen? ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 29. Mrz. 2008 16:21 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hallo Jörn, ist deine Form als "Progressbar" benannt ??? Wenn das so ist, musst die die Form als nicht modal anzeigen.
Code: Form.show 0
Ansonsten bleibt dein Code so lange stehen bis das Formular wieder geschlossen wird. Ausserdem sollest du die Eigenschaften der Progressbar immer zurücksetzen.
Code: frmFortschritt.Progressbar.value=0
Wenn du auch den Fortschritt in der Progressbar sehen willst, sollest du innerhalb deiner Bearbeitung das Formular mal "refreshen" und mit Doevents etwas Rechnerleistung freigeben.
Code: frmFortschritt.refresh doevents
Übrigens geht das bei mir auch bei ac2000Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1776 Registriert: 11.10.2004
|
erstellt am: 30. Mrz. 2008 18:51 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hallo Wilfried, danke für Deine Antwort, ich komme aber trotzdem nicht so recht weiter. Meine Form hieß anfänglich ProgressBar1, der gleiche Name wie das Steuerelement. Ich habe es umbenannt (frmFortschritt.ProgressBar1), ohne Erfolg. Code:
frmFortschritt.ProgressBar1.Max = n frmFortschritt.ProgressBar1.Value = 0 frmFortschritt.Show 0 DoEvents
Resultat: "frmFortschritt.Show 0" => Falsche Anzahl an Argumenten oder ungültige EigenschaftszuweisungCode:
frmFortschritt.ProgressBar1.Max = n frmFortschritt.ProgressBar1.Value = 0 frmFortschritt.Show frmFortschritt.Refresh DoEvents
Resultat: "frmFortschritt.Refresh" => Methode oder Datenobjekt nicht gefunden.Diese Test's habe ich alle in ACAD 2000 durchgeführt, in ACAD 2006 läuft das perfekt, auch Deine ganzen Tips konnte ich da umsetzen. Also muss doch noch irgendein Unterschied zwischen den VBA-Versionen von Deinem ACAD2000 und meinem vorhanden sein. Da ich nicht so der der VBA'ler bin wäre es schön, wenn mir einer von Euch sagen kann, wie ich das rausfinde. Meine erste Idee war über Verweise eine aktuellere Typenbibliothek von ACAD einzubinden, das geht aber nicht, weil dann folgender Kommentar kommt: "Name steht im Konflikt mit bestehendem Modul, Projekt oder existierender Objektbibliothek." Der vorhandene Verweis auf die Typenbibliothek von 2000 kann aber nicht entfernt werden, weil: "Verweis oder Steuerelement kann nicht entfernt werden, wird zur Zeit verwendet."
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 31. Mrz. 2008 10:34 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hallo Jörn, ich habe nochmal die alte Kiste aktiviert und nachgeschaut. Ich muss da wohl ein Stück zurück ans Ufer rudern. Beim 2000er gibt es in der Tat nicht die Eigenschaft ShowModal. Ich hatte die Progressbar innerhalb der ausführenden Form. Deshalb ging es dort. Beim 2000er wird bei der Methode show kein Parameter unterstützt. Die Formulare werden grundsätzlich modal angezeigt. Das heisst das der Programmcode in dem Formular so lange wartet bis das aufgerufene Formualar wieder geschlossen wird. Ein Würgaround wäre die Funktion innerhalb deines Fortschrittsformular auszuführen. oder einfach bei Version 2000 auf den Fortschrittsbalken in einem extra Formular zu verzichten. Wilfried Stelberg
------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1776 Registriert: 11.10.2004
|
erstellt am: 31. Mrz. 2008 10:44 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hallo Wilfried, schade, dann werde ich wohl auf den Fortschrittsbalken verzichten. Kannst mir vielleicht noch einer auf die Schnelle sagen, wie ich in VBA sinnvoll die ACAD-Version abfragen kann??  In LISP wäre das sowas: (if (>(atof (getvar "ACADVER"))15.05) (dann zeige dem Fortschrittsbalken)) ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 31. Mrz. 2008 11:38 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hallo Jörn, die Version kannst du so abfragen:
Code: thisdrawing.Application.Version
Übringens, wenn du VB6 hast kannst du dir ein kleines OCX oder eine DLL machen. Da hast du ein Formular aus VB6 mit Fortschrittsbalken drin. Der Vorteil wäre das das dann Versionsunabhängig ist.Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1776 Registriert: 11.10.2004
|
erstellt am: 31. Mrz. 2008 12:18 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hallo Wilfried, danke für die Info's, ich glaube jetzt schaffe ich es. Zitat:
Übringens, wenn du VB6 hast kannst du dir ein kleines OCX oder eine DLL machen. Da hast du ein Formular aus VB6 mit Fortschrittsbalken drin. Der Vorteil wäre das das dann Versionsunabhängig ist.
leider ist die Zeit schon wieder so knapp  , sonst hätte ich das gerne nochmal rumexperimentiert. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1776 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 31. Mrz. 2008 16:45 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
Hallo, und doch noch eine Frage: in LISP kann ich die Version so abfragen: (if(atof (getvar "ACADVER"))15.05) "15.5" => 15.5 "16.2 (LMS Tech)" => 16.2 wenn ich in VBA übertrage bekomme mit folgender Funktion: CDbl(ThisDrawing.Application.Version) "15.5" => 15.5 "16.2 (LMS Tech)" => 0 Wie macht man das in VBA richtig? ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 31. Mrz. 2008 17:25 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
|

| |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1776 Registriert: 11.10.2004
|
erstellt am: 31. Mrz. 2008 18:48 <-- editieren / zitieren --> Unities abgeben:          Nur für archstudent
|