PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pronleme mit Menüleisten


DarkTemplar
12.06.2002, 00:32
Hi at all!!

Weiß einer von Euch, wie man Menüleisten zur Laufzeit zu seinem Programm hinzufügen kann? Eigentlich wird ja immer in der Hilfe geschrieben, dass man sie wie ganz normale Steuerelemente behandeln kann und wenn man sich einmal ein Formular mit dem Texteditor anschaut, ist der Quellcode auch nicht extra abgetrennt. Da steht dann "VB.MENU" und danach einfach der spezielle Name der Menüleiste direkt unter den anderen "normalen" Steuerelementen.

Bloß läßt sich eine Menüleiste nicht als dynamisches Steuerelement hinzufügen, da tritt immer ein Fehler auf. Zumindestens ist das bei meiner Funktion geschehen:


Form1.Controls.Add "VB.Menu", "mnu_test"


Dabei tritt dummerweise jedoch die Fehlermeldung auf, "Menu" seie kein gültiges Steuerelement.

Hat irgendwer eine Idee (wenn es auch nur ein Ansatz ist), wie man das Problem lösen könnte?

Bye,
DarkTemplar


USSEraser
14.06.2002, 20:17
Das es den Befehl Form1.Controls.Add gibt ist mir neu. Hab ewig nach sowas gesucht.

Du kannst doch einen Menüeintrag zur Entwurfszeit erstellen, und Visible auf False setzen. Wenn du mehrere erstellen willst, nimmst du ein Steuerelementfeld.

DarkTemplar
14.06.2002, 20:30
Hi!!

Ich habe es auch mit einem Steuerelementefeld versucht und meine momentane Notlösung sieht so aus, dass ich eine Anzahl vordiefiniere und mehr dürfen dann einfach nicht erstellt werden. Besser wäre es natürlich, wenn du (oder jemand anderes) eine Möglichkeit kennt, mit dem man dynamisch eine neue Menüleiste hinzufügt (ob normal oder in einem Steuerelementefeld ist vollkommen egal)!!!).

Wäre toll, wenn da jemand noch eine Idee hätte!

Was den Befehl betrifft, den gibt es tatsächlich und mit ihm kann man ohne weiteres dynamisch Steuerelemente hinzufügen, deren Klassen in der VB-Biblothek vermerkt und bei der Compiliering berücksichtigt wurden (hier ein Beispiel mit Ereignisverfolgung):


Option Explicit
Private WithEvents btnObj As CommandButton

Private Sub btnObj_Click()
MsgBox "Dies ist eine dynamisch eingefügte Schaltfläche."
End Sub

Private Sub Form_Load()
Set btnObj = Controls.Add("VB.CommandButton", "btnObj")
With btnObj
.Visible = True
.Width = 2000
.Caption = "Hallihallo"
.Top = 1000
.Left = 1000
End With
End Sub



Bye,
DarkTemplar

USSEraser
15.06.2002, 08:25
Dieses Beispiel sucht nacht .M3U Dateien und erstellt für jede gefundene Datei einen Menüeintrag.

Als Ausnahmefall wird der erste Eintrag behandelt, weil immer ein Objekt des Steuerelementfeldes schon bestehen muss.


For Each Datei In FSO.GetFolder(App.Path).Files
If UCase$(Datei.Name) Like "*.M3U" Then
c = c + 1
If c > 0 Then Load frmMenü.menDateien(c)
frmMenü.menDateien(c).Caption = Datei.Name
End If
Next Datei
frmMenü.menDateien(0).Visible = (c <> -1)

DarkTemplar
16.06.2002, 22:44
Vielen Dank, du hast mir wirklich enorm weitergeholfen!!

Bye,
DarkTemplar