Autor
|
Thema: MouseEvent in ScrollBar (1577 mal gelesen)
|
sAnjas Mitglied
Beiträge: 31 Registriert: 11.03.2014 Win7 Enterprise Catia V5/6 R24
|
erstellt am: 21. Okt. 2014 18:09 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, kann ich eine ScrollBar so programmieren, dass sie auf MouseEvents reagiert? Sprich wenn ich den Scroll-Balken loslasse passiert etwas? Click und MouseUp funktionieren leider nicht Viele Grüße Anja Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 21. Okt. 2014 18:28 <-- editieren / zitieren --> Unities abgeben: Nur für sAnjas
|
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 21. Okt. 2014 18:52 <-- editieren / zitieren --> Unities abgeben: Nur für sAnjas
Hallo Anja, grundsätzlich schon. Was weisst Du über Subclassing? Ist die Scrollbar teil Deiner Makro-App? Tschau, Joe --Edit-- Bernd hat Recht; Change reicht. SB.Value auswerten. Joe [Diese Nachricht wurde von joehz am 21. Okt. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sAnjas Mitglied
Beiträge: 31 Registriert: 11.03.2014 Win7 Enterprise Catia V5/6 R24
|
erstellt am: 22. Okt. 2014 09:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Joe, Change reicht leider nicht aus - Change reagiert sofort wenn man anfängt den Balken zu verschieben, ich hätte aber gerne ein Event das erst reagiert wenn ich aufhöre zu scrollen und die "Endposition" erreicht habe... Nein ich weiß nichts über Subclassing - kann ich damit das Verhalten eines MouseUp-Events erreichen?? Viele Grüße und Danke schon einmal für eure Hilfe! Anja Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 22. Okt. 2014 14:43 <-- editieren / zitieren --> Unities abgeben: Nur für sAnjas
Hallo Anja, wenn Du den Balken verschiebst(ziehst), löst Du Scroll-Events aus. Erst beim Auslassen des Balken kommt das Change-Event. Wenn Du hingegen auf die Pfeile klickst oder neben dem Balken(innerhalb der ScrollBar), löst Du fortlaufend Change-Events aus. Was willst Du eigentlich scrollen? Welchen Wert hast Du für 'Large Change' eingestellt? Subbclassing beinhaltet, dass Du die Messages an ein Fenster/Control abfängst und in einer eigenen WindowProcedure die für Dich interessanten selbst verarbeitest. Das ist kein Zweizeiler. Tschau, Joe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sAnjas Mitglied
Beiträge: 31 Registriert: 11.03.2014 Win7 Enterprise Catia V5/6 R24
|
erstellt am: 22. Okt. 2014 14:55 <-- editieren / zitieren --> Unities abgeben:
Hey Joe, Mein "Large Change" und mein "Small Change" sind 1. Ich möchte, dass beim Scrollen der Wert der ScrollBar in einer TextBox ausgegeben wird, beim Loslassen des Balkens soll der Wert an Catia übergeben und direkt ein Update, das einige Veränderungen und Berechnungen nach sich zieht, veranlasst werden. Durch das Scroll-Event klappt das mit der Anzeige der Werte wunderbar, Change löst bei mir aber direkt aus sobald ich an dem Balken etwas verändere - dadurch kann ich nicht mehr weiter scrollen da Catia mit dem zeitintensiven Update alles blockiert... Kann das vielleicht auch ein Problem/Unterschied in dem Change-Event des ActiveX Steuerelements von der alten 32Bit-Version zu der 64Bit-Version sein? Früher hatte ich das ganze einfach über einen Slider gelöst, aber der existiert in der 64Bit-Version ja leider nicht mehr Viele Grüße Anja Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 22. Okt. 2014 18:05 <-- editieren / zitieren --> Unities abgeben: Nur für sAnjas
Hallo Anja, versteh ich nicht... Ich hab hier Win7/64 und V5 R19 mit 64 Bit. Ausserdem VB6SP6/32(Compiler) oder VB6.5(Catia-integriert). Den Slider(MS Slider Control 6.0/SP6, bzw. V5.0/SP2) kann ich unter beiden IDEs verwenden; Speicherort c:\windows\SysWOW64\MSCOMCTL.ocx, bzw. \COMCTL32.ocx. Bist Du sicher, dass der nicht mehr existiert? Tschau, Joe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sAnjas Mitglied
Beiträge: 31 Registriert: 11.03.2014 Win7 Enterprise Catia V5/6 R24
|
erstellt am: 23. Okt. 2014 09:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Joe, Das "Problem" ist das unter der R24 auch VB mit 64Bit läuft - dadurch hat man nicht diesen Bruch Catia 64Bit, VB 32Bit, abes dadurch fehlen halt einige ActiveX-Elemente. Auszug aus einer Seite von Microsoft: "Native 64-bit processes in Office 2010 cannot load 32-bit binaries. This includes the common controls of MSComCtl (TabStrip, Toolbar, StatusBar, ProgressBar, TreeView, ListViews, ImageList, Slider, ImageComboBox) and the controls of MSComCt2 (Animation, UpDown, MonthView, DateTimePicker, FlatScrollBar).These controls were installed by previous versions of Microsoft Office and are installed by 32-bit Office 2010. An alternative must be found for existing Microsoft Office VBA solutions that utilize these controls when the code is migrated to 64-bit Office 2010. 64-bit Office 2010 does not provide 64-bit versions of the Common Controls." Nicht gut Viele Grüße Anja Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 23. Okt. 2014 12:16 <-- editieren / zitieren --> Unities abgeben: Nur für sAnjas
Hi Anja, laufen denn Api-Aufrufe? Z.B.
Code:
'----------------------in einer form 'init common controls lib; quit on error If (InitComctl32(ICC_BAR_CLASSES) = False) Then MsgBox "Can't Init CC": End'----------------------in einem modul ' Initializes the entire common control dynamic-link library. ' Exported by all versions of Comctl32.dll. Public Declare Sub InitCommonControls Lib "comctl32.dll" () ' Initializes specific common controls classes from the common ' control dynamic-link library. ' Returns TRUE (non-zero) if successful, or FALSE otherwise. ' Began being exported with Comctl32.dll version 4.7 (IE3.0 & later). Public Declare Function InitCommonControlsEx Lib "comctl32.dll" (lpInitCtrls As tagINITCOMMONCONTROLSEX) As Boolean Type tagINITCOMMONCONTROLSEX ' icc dwSize As Long ' size of this structure dwICC As Long ' flags indicating which classes to be initialized. End Type Public Const ICC_BAR_CLASSES = &H4 'toolbar, statusbar, trackbar, tooltips Public Function InitComctl32(dwFlags As Long) As Boolean Dim icc As tagINITCOMMONCONTROLSEX On Error GoTo Err_OldVersion icc.dwSize = Len(icc) icc.dwICC = dwFlags ' VB will generate error 453 "Specified DLL function not found" ' here if the new version isn't installed and it can't find the function's ' name. We'll hopefully be able to load the old version below... InitComctl32 = InitCommonControlsEx(icc) Exit Function Err_OldVersion: InitCommonControls End Function
Wenn das Programm ohne MsgBox abläuft, kannst Du die Common Controls verwenden. Andere Idee: Anstatt sofort von dem Change-Event aus an Catia zu übergeben, erstelle noch einen Command Button, der den ScrollBar.Value ausliest und an Catia übergibt. Tschau, Joe
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |