Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  VBA: CATIA-Dialog mit UserForms nachbauen, SelectElement2

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:   VBA: CATIA-Dialog mit UserForms nachbauen, SelectElement2 (2284 mal gelesen)
gdir
Mitglied



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

Beiträge: 157
Registriert: 25.06.2003

erstellt am: 05. Feb. 2004 16:20    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


circle_dialog.jpg

 
Hallo,

hat jemand schon mal erfolgreich CATIA-Dialoge mit VBA und UserForms nachgebaut? Ich habe Probleme in der Kombination von UserForms und der SelectElement2-Methode.

Zur Erklärung:
Ich verwende R12 SP03. Mein Dialog ist vergleichbar mit dem "Circle Definition"-Dialog im GSD. Man muss hier zwei Geometrieelemente selektieren: Center und Support. Hat das Feld "Center" den Fokus, so läuft eine Selektionsroutine für den Center Point. Klickt man in das Feld "Support", so wird die Selektion für den Center abgebrochen und die Selektion für das Support-Objekt beginnt.

Ich habe das Problem, dass ich beim Wechsel zwischen den Felder die SelectElement2-Methode nicht abgebrochen bekomme. Solange SelectElement2 auf eine Geometrieselektion wartet, werden beim Verlassen bzw. Eintreten in eine neues Feld die Enter- und Exit-Events nicht zuverlässig ausgelöst. CATIA wartet stoisch weiter auf die Geometrieauswahl. Ich habe schon versucht, mittels SendKeys "{ESC}" beim Wechsel in eine andere ListBox, SelectElement2 abzubrechen, aber ohne Erfolg. Manuelles Drücken von Escape funktioniert, aber SendKeys bleibt ohne Wirkung.

Mache ich etwas falsch oder habt Ihr die gleichen Probleme?

Viele Grüße

Günther

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

gdir
Mitglied



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

Beiträge: 157
Registriert: 25.06.2003

erstellt am: 06. Feb. 2004 13:58    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,

ich komme der Lösung langsam etwas näher. Die Enter- und Exit-Events funktionieren jetzt. Allerdings kann ich SelectElement2 immer noch nicht abbrechen:

- Interaktives Drücken der Escape-Taste bricht SelectElement2 zuverlässig ab
- Sendkeys "{ESC}" oder "^Z" funktioniert nicht
- Andere Sendkey-Aufrufe wie Sendkeys "c:Fit All In" funktionieren an dieser Stelle völlig problemlos (CATIA führt den Reframe durch und wartet anschließend weiter auf die Selektion)
- AppActivate "CATIA V5" brachte keine Besserung
- Keiner der Buttons in meinem UserForm hat die Eigenschaft Cancel=True

Irgendwelche Ideen?

Günther

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

gdir
Mitglied



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

Beiträge: 157
Registriert: 25.06.2003

erstellt am: 06. Feb. 2004 15:12    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

Ich glaub', ich hab's jetzt (fast):

Es scheint sich um ein Laufzeit-Problem zu handeln: Schicke ich nach dem AppActivate nicht nur ein, sondern mehrere Escapes mit SendKeys, dann bekommt irgendwann SelectElement2 auch ein Escape ab ...

Lösung in Sicht ...

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

gdir
Mitglied



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

Beiträge: 157
Registriert: 25.06.2003

erstellt am: 09. Feb. 2004 11: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

Hallo,

ich habe leider immer noch ein Problem: VBAs Reihefolge im Event Handling führt leider dazu, dass nach dem Abbrechen der Selektion der falsche Frame den Fokus zurückbekommt.

Kann mir jemand beim Verständnis der Event-Reihenfolge helfen?

Im Detail:
Ich habe zwei Frames (Frame1 und Frame2), die jeweils eine ListBox enthalten.

Frame1 hat eine Sub für den Enter-Event: Frame1_Enter()
In dieser Sub wird SelectElement2 aufgerufen. Die Enter-Sub kann erst weiterlaufen, wenn
a) ein Element selektiert wurde oder
b) die Selektion mit Esc (Taste drücken oder SendKeys-Aufruf) beendet wurde.

Frame1 hat eine Sub für den Exit-Event: Frame1_Exit( ... )
Die Hauptaufgabe dieser Sub besteht darin, die Selektion aus Frame1_Enter abzubrechen. Dazu sende ich mittels Sendkeys zwei Escape-Signale. Code-Auszug:

AppActivate "CATIA V5"
Sendkeys Chr(27), True
Sendkeys Chr(27), True

Frame2 besitzt ebenfalls eine Enter- und Exit-Sub: Frame2_Enter() und Frame2_Exit( ... ), beide zur Zeit ohne wesentliche Funktion.


Folgendes passiert:
1. Ich klicke in den Frame1. Frame1_Enter wird ausgeführt und SelectElement2 wird aufgerufen. Frame1_Enter wartet an dieser Stelle auf das Ende von SelectElement2. Solange ich nichts selektiere oder Esc drücke, wird SelectElement2 und somit auch Frame1_Enter nicht beendet. So weit, so gut.

2. Klicke ich jetzt in Frame2, so wird zuerst Frame1_Exit ausgelöst. Sendkeys schickt die Escapes. Die Escapes werden aber nicht sofort bearbeitet. Stattdessen wird erst Frame1_Exit beendet. Anschließend wird noch Frame2_Enter ausgeführt (ich hatte ja in Frame2 geklickt).

3. Erst jetzt werden die mit SendKeys verschickten Escape verarbeitet. Das ursprünglich in Frame1_Enter gestartete SelectElement2 beendet sich. Dadurch wird Frame1_Enter auch erst jetzt beendet. Dummerweise wandert dadurch der Fokus wieder von Frame2 auf Frame1 zurück.

4. Das hat zur Folge, dass Frame2_Exit und Frame1_Enter wieder ausgeführt werden. Mit anderen Worten: Ich bin genau da, wo ich angefangen habe: In der Selektion von Frame1!!!

Gibt es eine Möglichkeit, dass die mit Sendkeys geschickten Escapes "zwischendurch" verarbeitet werden?

Ohne Erfolg ausprobiert habe ich
- Sendkeys Chr(27), False
- DoEvents() in Frame1_Exit nach den Sendkeys

Hat jemand eine Idee? Oder kann mir jemand ein gutes VBA-Buch empfehlen, in dem das Event Handling beschrieben wird?

Vielen Dank

Günther

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

jkendl007
Mitglied


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

Beiträge: 1
Registriert: 14.11.2019

erstellt am: 14. Nov. 2019 12:20    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 gdir 10 Unities + Antwort hilfreich

Hallo,

ich bin schon viele Jahre begeisterter Leser dieses Forums und konnte schon zahlreiche Probleme dadurch lösen.

Doch nun stehe ich vor demselben Problem wie gdir.
Hat in der Zwischenzeit jemand das Problem lösen können, wie man SelectElement2 abbrechen/canceln kann?

Vielen Dank,
Josef

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)2019 CAD.de | Impressum | Datenschutz