Location: Cologne, Germany
Occupation: Second Vice President of Distributed Junk and Trash Development
Toolbar in einem UserControl möglich?
Hallo,
ist es möglich, einem UserControl eine Toolbar hinzuzufügen?
... schlägt fehl:
Danke im voraus & Grüße ... Peter
ist es möglich, einem UserControl eine Toolbar hinzuzufügen?
|
|
Jabaco Source |
1 2 3 4 5 6 7 |
Public Sub Usercontrol_Initialize() CreateToolBar End Sub Private Sub CreateToolBar() ToolBar.createToolBarItem "tabAdd", vbNullString, "Add", AddPng End Sub |
... schlägt fehl:
Quoted
java.lang.Exception: CallByName 'createToolBarItem' failed!
at VBA.Interaction.CallByName(Interaction.java:186)
at VBA.Interaction.CallByName(Interaction.java:184)
at VBA.Interaction.CallByName(Interaction.java:175)
at uctrlProducts.CreateToolBar(uctrlProducts.jsrc:10)
at uctrlProducts.Usercontrol_Initialize(uctrlProducts.jsrc:2)
at VB.Usercontrol.fireLoaded(Usercontrol.jsrc)
at VB.LoadAdapter.run(LoadAdapter.jsrc)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Danke im voraus & Grüße ... Peter
Eine ToolBar kann man m.E. nur in Form, Dialog oder Applet erzeugen.
Ein Usercontrol ist ja nur eine Ansammlung von Controls (oder rekursiv Usercontrols ...), um die mühsame Definition von gleichartig sich wiederholenden Control-Konstellationen zu erleichtern. Wie man kaum einer PictureBox oder einem Frame eine ToolBar verpassen würde, so fällt mir auch keine Begründung dafür ein, es bei einem Usercontrol zu versuchen.
Wenn Du Deinem Beispiel-Code die Zeile "Option Explicit" voranstellst, bekommst Du zur Compile-Zeit auch schon eine hilfreiche Fehlermeldung.
Usercontrol hat kein Member Object "ToolBar". Das gibts eben nur in Form, Dialog und Applet.
Natürlich wäre es denkbar, die Framework-Klasse VB.Usercontrol als Mutter aller Usercontrols um eine ToolBar zu erweitern.
Gruß!
A1880
Ein Usercontrol ist ja nur eine Ansammlung von Controls (oder rekursiv Usercontrols ...), um die mühsame Definition von gleichartig sich wiederholenden Control-Konstellationen zu erleichtern. Wie man kaum einer PictureBox oder einem Frame eine ToolBar verpassen würde, so fällt mir auch keine Begründung dafür ein, es bei einem Usercontrol zu versuchen.
Wenn Du Deinem Beispiel-Code die Zeile "Option Explicit" voranstellst, bekommst Du zur Compile-Zeit auch schon eine hilfreiche Fehlermeldung.
Usercontrol hat kein Member Object "ToolBar". Das gibts eben nur in Form, Dialog und Applet.
Natürlich wäre es denkbar, die Framework-Klasse VB.Usercontrol als Mutter aller Usercontrols um eine ToolBar zu erweitern.
Gruß!
A1880
Location: Cologne, Germany
Occupation: Second Vice President of Distributed Junk and Trash Development
Hallo A1880,
danke für Deine schnelle Antwort!
ich würde gerne in jedem Tab eines TabStrip eine andere Toolbar platzieren (siehe Screenshot).
So, wie ich das verstanden habe, kann man Tabs nur mit UserControls befüllen. Daraus resultiert meine Frage.

Nun gut, dann muss ich mir ein anderes GUI-Konzept überlegen.
Danke & Grüße ... Peter
danke für Deine schnelle Antwort!
Quoted from "A1880"
Wie man kaum einer PictureBox oder einem Frame eine ToolBar verpassen würde, so fällt mir auch keine Begründung dafür ein, es bei einem Usercontrol zu versuchen.
ich würde gerne in jedem Tab eines TabStrip eine andere Toolbar platzieren (siehe Screenshot).
So, wie ich das verstanden habe, kann man Tabs nur mit UserControls befüllen. Daraus resultiert meine Frage.
Nun gut, dann muss ich mir ein anderes GUI-Konzept überlegen.
Danke & Grüße ... Peter
Du könntest statt ToolBars Usercontrols definieren, die jeweils aus PictureBoxes mit Eventhandlern bestehen.
Dein ToolBar-Usercontrol könnte eine Init-Methode bekommen, bei dem es dynamisch festlegt, welche Bilder wo geladen werden.
Vermutlich müsstest Du eine Resize-Methode implementieren, damit das Usercontrol seine Breite bei Bedarf anpasst.
Gruß!
A1880
Dein ToolBar-Usercontrol könnte eine Init-Methode bekommen, bei dem es dynamisch festlegt, welche Bilder wo geladen werden.
Vermutlich müsstest Du eine Resize-Methode implementieren, damit das Usercontrol seine Breite bei Bedarf anpasst.
Gruß!
A1880
Hallo Peter,
die UI sieht ja eigentlich ganz nett aus.
ich würde mich nicht lange mit den Jabaco-Klassen VBToolBar und VBToolBarItem rumärgern, sondern stattdessen schauen wie die gemacht sind. VBToolBar und VBToolBarItem regeln einfach das Handling mit einer Form.
VBToolBar ist ne abgeleitete Klassen von javax#swing#JToolBar
VBToolBarItem ist ein Nachfahr von javax#swing#JButton
mach einfach selber eine oder zwei Klasse die das Handling anstatt mit einer Form mit einem UserControl regelt.
Gruß
OlimilO
die UI sieht ja eigentlich ganz nett aus.
ich würde mich nicht lange mit den Jabaco-Klassen VBToolBar und VBToolBarItem rumärgern, sondern stattdessen schauen wie die gemacht sind. VBToolBar und VBToolBarItem regeln einfach das Handling mit einer Form.
VBToolBar ist ne abgeleitete Klassen von javax#swing#JToolBar
VBToolBarItem ist ein Nachfahr von javax#swing#JButton
mach einfach selber eine oder zwei Klasse die das Handling anstatt mit einer Form mit einem UserControl regelt.
Gruß
OlimilO
Everywhere: Freedom for ToolBar
Hi @ll,
it's all that easy
Add a new Class and name it Toolbar.
In Propertyeditor for the SuperClass select javax/swing/JToolBar
and add the following Code to the ToolBar-Class:
Now add a new UserControl to your project
switch to the Codepane of the UserControl-Class and add the following Code:
Of course you can use this ToolBar in a Form:
One issue of the Form-Class: you can not use the Name ToolBar because there is already a function with that name.
One issue of the ToolBar-Class: when using it floatable and clicking a button will close the Floatform and bring the ToolBar back docked to Form1.
regards
OlimilO
it's all that easy
Add a new Class and name it Toolbar.
In Propertyeditor for the SuperClass select javax/swing/JToolBar
and add the following Code to the ToolBar-Class:
|
|
Jabaco Source |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Option Explicit Implements ActionListener Private Const PreferredBtnHeight As Integer = 26 Private Const PreferredBtnWidth As Integer = 26 Public Event ButtonClick(ActionCmd As String) Public Sub ToolBar Me.setVisible(True) Me.setLocation(0, 0) Me.setFloatable(False) End Sub Public Sub AddButton(Text As String, ToolTip As String, ActionCmd As String) Dim btn As New JButton btn.setText(Text) btn.addActionListener(Me) btn.setToolTipText(ToolTip) btn.setActionCommand(ActionCmd) btn.setSize(PreferredBtnWidth, PreferredBtnHeight) Me.add(btn) End Sub Public Sub actionPerformed(arg2 As ActionEvent) RaiseEvent ButtonClick(arg2.getActionCommand) End Sub |
Now add a new UserControl to your project
switch to the Codepane of the UserControl-Class and add the following Code:
|
|
Jabaco Source |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Option Explicit Dim Withevents ToolBar As New ToolBar Public Sub Usercontrol_Initialize() Me.add(ToolBar) ToolBar.setSize(Me.Width, 26) ToolBar.AddButton("ABC", "dings ABC", "ABC") ToolBar.AddButton("DEF", "dings DEF", "DEF") End Sub Sub ToolBar_ButtonClick(ActionCmd As String) Select Case ActionCmd'.getActionCommand Case "ABC": MsgBox("The ABC Button was pressed in " & "UserControl1") Case "DEF": MsgBox("The DEF Button was pressed in " & "UserControl1") End Select End Sub |
Of course you can use this ToolBar in a Form:
|
|
Jabaco Source |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Option Explicit Dim Withevents TB As New ToolBar Public Sub Form_Load() Me.add(TB) TB.setSize(Me.Width, 26) TB.AddButton("ABC", "dings ABC", "ABC") TB.AddButton("DEF", "dings DEF", "DEF") End Sub Sub TB_ButtonClick(ActionCmd As String) Select Case ActionCmd'.getActionCommand Case "ABC": MsgBox("The ABC Button was pressed in " & "Form1") Case "DEF": MsgBox("The DEF Button was pressed in " & "Form1") End Select End Sub |
One issue of the Form-Class: you can not use the Name ToolBar because there is already a function with that name.
One issue of the ToolBar-Class: when using it floatable and clicking a button will close the Floatform and bring the ToolBar back docked to Form1.
regards
OlimilO
Similar threads
-
Tips, Tricks, Samples & Tutorials »-
use global variables in an another Usercontrol
(Apr 1st 2010, 8:42am)
-
Tips, Tricks, Samples & Tutorials »-
Create Jabaco-Menu / Jabaco-ToolBar
(Aug 22nd 2008, 2:33am)
-
Bugreports and known bugs »-
[VERSION 1.4.2] Usercontrol Bug
(Jul 27th 2009, 5:38am)
-
Allgemeine Themen, Fragen und Diskussionen »-
Sind VB6 UserControls möglich?
(Nov 28th 2008, 9:18am)
