Autor
|
Thema: Msgbox -> Script funktioniert; Keine Msgbox -> Script funktioniert nicht?! (987 mal gelesen)
|
Maetes Mitglied Student
Beiträge: 118 Registriert: 05.05.2009 XP 64Bit CATIA V5R19SP4 MS Office 2003
|
erstellt am: 07. Okt. 2009 12:57 <-- editieren / zitieren --> Unities abgeben:
Hallo ich nochmal! Bin langsam echt wieder an dem sorry: S*******zeug am verzweifeln.. Hier ein Verweis auf das Ursprungsproblem: http://ww3.cad.de/foren/ubb/Forum137/HTML/003693.shtml Wo das Problem liegt weiss ich jetzt, nun such ich nach einer Lösung. Hätte auch eine, aber Catia macht mir da wieder ein Strich durch die Rechnung. Lösungsansatz ist folgender (statt MouseDown hab ich auch schon DropButtonClick probiert (ohne Erfolg): Code: Private Sub FileSelection_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) FileSelection.Clear For Nr = 1 To CATIA.Windows.Count FileSelection.AddItem (CATIA.Windows.Item(Nr).Caption) Next End Sub Private Sub FileSelection_Change() MsgBox "k" If Not FileSelection.ListIndex = -1 Then MsgBox "Tu es!" & FileSelection.ListIndex End If End Sub
Funktioniert! Tut man jetzt aber MsgBox "k" auskommentieren, bekomm ich mit ListIndex immer den Wert 0?!?! Kann mir da mal einer denn Grund sagen, bevor ich die Wände hochklettere? Die Abfrage "FileSelection.ListIndex = -1" müsste eigentlich auch nicht sein, aber das scheint mir nach unerklährlicher Catia bzw VBA Logik ;(In anderen Fällen beschwert sich das Makro beim BEENDEN des MAKROS über einen ungültigen Eigenschaftswert. Dabei liegt das Problem im DropDownMenü-Event. Was hat er da beim beenden zu suchen??? Insgesamt habe ich den Eindruck, die ganzen Events sind ein einziges Bastelwerk.. ------------------ Catia ist doof Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 07. Okt. 2009 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für Maetes
|
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 07. Okt. 2009 13:34 <-- editieren / zitieren --> Unities abgeben: Nur für Maetes
Hallo, mir fällt auch nur die Zeit ein. Ich würde das ganze aber anders anpacken. Und zwar über einen Timer (das ist dann deine Schleife in der du läufst). Such hierzu mal in der Visual Basisc Referenz (Hilfe) nach Timer und klick mal auf den Eintrag "Event Statement Example". Wenn der Timer tickt würde ich die aktuelle Anzahl der Fenster in CATIA abfragen. Wird diese Zahl erhöhlt => es wurde ein neues Dokument zum aktiven CATIA hinzugefügt => du kannst es in deine ComboBox aufnehmen. Das Change-Ereignis sollte dann funktionieren. Vor dem Beenden kannst du ja den ListIndex immer auf 0 setzen damit du keinen ungültigen Eigenschaftswert bekommst (oder gleich die CmboBox aus der Controls-Collection rauswerfen (mit remove)). ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Maetes Mitglied Student
Beiträge: 118 Registriert: 05.05.2009 XP 64Bit CATIA V5R19SP4 MS Office 2003
|
erstellt am: 07. Okt. 2009 14:08 <-- editieren / zitieren --> Unities abgeben:
Hatte ich auch erstmal die Idee mit der Zeit. Hab dann eine Schleife eingebaut, allerdings bis 10000 glaub. Vielleicht wars zu wenig? Werd mir eure Ansätze mal genauer angucken. Danke! Und sorry! Sowas macht mich schnell rasend.. ------------------ Catia ist doof Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 07. Okt. 2009 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für Maetes
Zitat: Original erstellt von Maetes: Hatte ich auch erstmal die Idee mit der Zeit. Hab dann eine Schleife eingebaut, allerdings bis 10000 glaub. Vielleicht wars zu wenig? Werd mir eure Ansätze mal genauer angucken. Danke! Und sorry! Sowas macht mich schnell rasend..
Ich glaube ehrer, dass du dem Prozess, der ja noch durchläuft, um diese Daten zu füllen, zuviel Leistung wegnimmst, was du bei eine Messagebox nicht hast. Was meinst du eigentlich, dass du eine Schleife duchlaufen lässt? For i = 0 to 10000 next Wenn so deine Schleife aussieht, muss ich dich enttäuschen, da diese innerhalb von Millisekunden durchgelaufen ist und soviel Leistung wie sie nur kriegen kann von der CPU zieht, dass der andere Prozess, auf den das Programm eigentlich warten sollt, wiederum gebremst wird. Pack entweder ein doevents-Befehl mit rein oder besser nutze einen Timer, der keine Leistung wegnimmt. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 07. Okt. 2009 14:42 <-- editieren / zitieren --> Unities abgeben: Nur für Maetes
|
MICHLICK Mitglied CAD Methodik Entwickler (CATIA; NX)
Beiträge: 454 Registriert: 20.06.2001 Der Aufwand bei Änderungen ist groß, wenn die Finger schneller klicken als das Gehirn denkt.
|
erstellt am: 07. Okt. 2009 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für Maetes
Hallo Maetes, ich weiß nicht wozu Du das 2. Ereignis brauchst aber Du hast Dir das Problem selbst gemacht. Zuerst hast du das Ereignis FileSelection_MouseDown. Hier wird Dein Objekt FileSelection geleert und durch eine Schleife neu befüllt. Dabei löst jeder Eintrag in das Object FileSelection wiederum das Ereignis FileSelection_Change aus. Während Das Zweite Ereignis startet wird das erste weiter ausgeführt. Was soll denn durch das 2. Ereignis angetriggert werden? Die bessere Lösung wäre im ersten Ereignis eine Funktion aufzurufen (anstatt mit einem 2. Ereignis zu arbeiten). Dadurch ist gewährleistet, dass es im 1. Ereignis erst weiter geht wenn die Funktion abgeschlossen ist. Durch die MsgBox hast Du sichergestellt, dass genug Zeit vergangen ist um das vorhergehende Ereignis abzuschließen. Ich muss es Dir leider sagen. So schnell kannst Du gar nicht OK klicken Aus meiner Sicht wäre es sinnvoll erst nachdem das 1. Ereignis abgeschlossen ist mit anderen Dingen fortzufahren.
Der ListIndex ist immer die aktive Zeile in Deinem DropDown. Wenn Du wissen willst wie viele Einträge vorhanden sind, dann mußt du ListCount verwenden. ------------------ Gruß Michael B. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|