controls & FaceId

Bild

Betrifft: controls & FaceId von: ransi
Geschrieben am: 02.04.2005 21:18:18



      
Hallo

Noch einmal was kniffeliges zum Samstagabend:
Dieser code läuft Probleme.
Er erstellt eine neue Symbolleiste die alle controls mit ihrer ID auflistet ohne deren funktionalität zu übernehmen.
Die Leiste löscht sich  nicht   selber.
 Also Vorsicht !
Das ist alles so gewollt.
Ich kriege es aber alleine nicht auf die Reihe die FaceIds mit anzeigen zu lassen.
Habe es  sowohl  es mit .copyface als auch mit direkter zuweisung (.faceId=a.faceId) versucht.
Kann mir da mal jemand hifreich zur Seite stehen?
hatte mich zu dem Thema schon mal im Treeviev versucht, was aber an der Sperrigkeit der Imagelist scheiterte.

Option 
Explicit

Public Sub test()
'Ransi
Dim cbneu As CommandBar
Dim a As CommandBar Zähler in stufe1
Dim b As CommandBarControl
Dim cneu As CommandBarControl 'neu
Dim d As CommandBarControl 'Zähler in stufe 2
Dim e As CommandBarControl 'neu
Dim f As CommandBarControl 'zähler in Stufe 3
Dim g As CommandBarControl 'neu
Dim h As CommandBarControl 'Zähler in Stufe 4
Dim i As CommandBarControl 'neu
On Error Resume Next
DoEvents
Application.CommandBars(
"Übersicht über die CommandbarControls").Delete
Set cbneu = Application.CommandBars.Add("Übersicht über die CommandbarControls")
cbneu.Visible = 
True
Set b = Application.CommandBars("Übersicht über die CommandbarControls").Controls.Add(msoControlPopup)
b.Caption = 
"Alle ID's anzeigen"
For Each a In Application.CommandBars 'stufe1
    If a.Name <> "Übersicht über die CommandbarControls" Then
        
Set cneu = b.Controls.Add(Type:=msoControlPopup)
        cneu.Caption = a.NameLocal & 
" ID:=" & a.ID
        
For Each d In a.Controls 'stufe2
            Set e = cneu.Controls.Add(Type:=msoControlPopup)
            e.Caption = d.Caption & 
" ID:=" & d.ID
                
For Each f In d.Controls 'stufe3
                    If Not f Is Nothing Then
                        
Set g = e.Controls.Add(Type:=msoControlPopup)
                        g.Caption = f.Caption & 
" ID:=" & f.ID
                    
End If
                    
For Each h In f.Controls 'stufe4
                        If Not h Is Nothing Then
                            
Set i = g.Controls.Add(Type:=msoControlPopup)
                            i.Caption = h.Caption & 
" ID:=" & h.ID
                        
End If
                    
Next
                
Next
        
Next
    
End If
Next
Set cbneu = Nothing
Set b = Nothing
Set cneu = Nothing
Set e = Nothing
Set g = Nothing
End Sub

danke schon mal ins vorraus für  unterstützung.
ransi 


     Code eingefügt mit Syntaxhighlighter 3.0


Bild


Betrifft: ????? von: Ramses
Geschrieben am: 02.04.2005 22:39:33

Hallo ransi

warum wurde der Beitrag von Hajo gelöscht ??

irgendwie kriege ich das nicht auf die Reihe.
Du weist eine ID-Eigenschaft, und damit natürlich auch die Funktionalität, zu,... willst aber nicht die Funktionalität ?
Was ist der Sinn ?

Eine FaceId müsste eigentlich hinter jeder EXCEL-eigenen Schaltfläche stehen.
Siehe auch in der Online-Hilfe, weil damit das Aussehen des Buttons definiert wird.
Nur benuterdefinierte Symbole haben eine FaceId von 0

Gruss Rainer


Bild


Betrifft: Wahrscheinlich ein versehen.. von: ransi
Geschrieben am: 02.04.2005 22:48:28

hallo rainer

im ursprungscode weise ich keine ID zu.
ich schreibe nur die ID in die caption.
sinn und zweck der sache ist folgende:
Die neue commandbar kommt in die entwicklungsumgebung.
Sie dient als nachschlagewerk.
mit den FaceIds hat man den besseren und schnelleren überblick.

ransi


Bild


Betrifft: AW: Wahrscheinlich ein versehen.. von: Ramses
Geschrieben am: 02.04.2005 22:57:39

Hallo

die ID und die FaceID müssten eigentlich gleich sein.
Mit der FaceID weise ich dem Button nur ein ANDERES Aussehen zu, als es der ID entspricht.

Auszug aus der Hilfe:

*******************************
FaceID
Gibt die ID-Nummer für das derzeit dem angegebenen Schaltflächensteuerelement der Befehlsleiste zugewiesene Schaltflächensymbol zurück oder legt sie fest. Long-Wert mit Lese-/Schreibzugriff.

Hinweise
Die FaceId-Eigenschaft bestimmt das Aussehen, jedoch nicht die Funktion einer Befehlsleistenschaltfläche.
Die Id-Eigenschaft des CommandBarControl-Objekts bestimmt die Funktion der Schaltfläche.

***************************

Gruss Rainer
Der Wert der FaceId-Eigenschaft für eine Befehlsleistenschaltfläche mit einem benutzerdefinierten


Bild


Betrifft: AW: Wahrscheinlich ein versehen.. von: ransi
Geschrieben am: 02.04.2005 23:13:07

Hallo rainer

genau das scheint ja das problem zu sein.
Ohne vorherige zuweisung einer Id kann ich die FaceId nicht ändern.

bringt mich aber auf eine andere iddee.

DummyControl erstellen
dem die id und die faceId zuweisen.
onaction auf"" setzen
und dann die faceid übernehmen.

werde ich so probieren und mich wieder melden.

ransi


Bild


Betrifft: Das ist richtig ... von: Ramses
Geschrieben am: 02.04.2005 23:16:33

Hallo Ransi

ohne ID keine FaceID.

Der Button muss zuerst wissen was er machen soll, danach kann man ihn verkleiden mit der FaceID

Etwas prosaisch, aber wohl ziemlich zutreffend :-)

Gruss Rainer


Bild


Betrifft: Doch kein versehen ?!? von: ransi
Geschrieben am: 03.04.2005 16:33:46

hallo rainer

ich denke hajo hat gelöscht weil der beispielcode vielleicht nicht ganz astrein war...
meine oberfläche war jedenfalls zerschossen.
war auf den ersten blick nicht zu erkennen.
obs am code lag kann ich nicht mehr genau sagen, weil der code ist ja jetzt gelöscht..


ransi


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Summe e. Spalte abhäng. machen v. Wert. d. Nachbar"