RibbonsBar (Office 2007 Bar) UDF

  • UEZ

    sorry das ich erst jetzt antworte... aber ich habe zur Zeit kaum noch privat Zeit um eigene geplante Projekte fertig zu stellen ^^...
    Wenn ich das richtig verstanden habe waren die ja auch nicht soooo beeindruckt von der UDF ^^
    Sie haben ja den Link.... aber wie gesagt für ne Übersetzung habe ich ATM leider keine Zeit...

    Ich habe auch noch ne Weiterentwicklung der Bar zu 3/4 fertig... nur wann ich die mal fertig mache ^^ hehe keine Ahnung ^^ ...

    MFG chris :D

  • Wenn ich das richtig verstanden habe waren die ja auch nicht soooo beeindruckt von der UDF ^^

    Beeinduckt, dass kann man wohl sagen. Deine UDF ist :thumbup:²

    Vielleicht mal für ne V0.3 oder V0.4
    - Freie Farbdefinition für das Ribbon ("Weiß", Braun, Gelb, Pink, etc...) Die Farben könnten ggf. als ini oder xml separiert werden ;)
    - MainMenü Tab (wie Office2010)
    - Ribbon Höhenänderung
    - ...

  • Servus...

    Danke erst mal ;)

    also 0.3 ist zu 80-90% fertig aber liegt zu Zeit leider total auf Eis, da ich in meiner Firma nen großes Projekt laufen habe...

    also zu freien Farben: Das ganze sind alles Bilder... gerade wegen den Farbverläufen...du kannst aber in der bar.dll dir eine neue Farbversion anlegen... ist aber etwas arbeit ;) die Farbversion musst du dann auch in der UDF anlegen.. Wenn du das machen willst kann ich dir meine Rohdaten geben dann siehst du wo welche bmps/icons hin kommen... Kannst dir dazu auch mal das Thema hier angucken.. [ gelöst ] IconFX Beispiele ( Icon2DLLs )
    Hier haste auch mal die Roh.bmp aus denen ich die dll erstellt habe. ( Edit: Habe gerade gesehen das Imageshark.us leider BMP in PNG wandelt... also wenn du das Original haben willst sag bescheid )

    Main MenüTab... mal gucken vieleicht ^^ aber wenn dann Glaube ich eher dass ich das dann in ner 2010 UDF mache ;)

    Höhenänderung geht wegen den Bildern nur schwer... müsstest alles anpassen ^^ aber ne gute Idee ;)

    Wie gesagt ... das ist die 3 Version der RibbonsBar, aber immer noch ne Baustelle ... mir gefällt das neue Design von 2010 sehr gut... und ich bin etwas weiter in sachen GDI...
    Also wenns ne neue 2010er Version gibt wird die mit der GDI gemacht... und hat den neuen Style...

    MFG chris :D

  • also 0.3 ist zu 80-90% fertig aber liegt zu Zeit leider total auf Eis, da ich in meiner Firma nen großes Projekt laufen habe...

    Versteh ich, Beruf geht vor - ist bei mir auch nicht anders ;)

    Hier haste auch mal die Roh.bmp aus denen ich die dll erstellt habe.

    Danke für den Einblick... Werd mal bei Gelegenheit "probehalber" eine Farbanpassung versuchen... Die .BMP reicht der weiße Hintergrund ist schnell auf Transparent gesetzt ^^

    Gruß
    Tim.

  • Hey.
    Sry das ich diesen Thread aus der Schublade rausgekramt habe ^^ ...
    Ich möchte mein Programm mithilfe der UDF verschönern, nur leider gibt es noch nicht die Buttons wie im Anhang.
    Währe sehr nett wenn du das noch hinzufügen könntest. Das Menu was dann kommt kanns ja dann noch später posten hauptsache du tust es hinzufügen.
    Thx AntiSpeed

  • servus...

    Leider ist es nicht ohne weiteres möglich diese zusammenhängenden Buttons wie in deinem Anhang in die Bar einzubauen.
    Die Positionsberechnung dieser Buttons und deren Breite ist ganz anders ( Zusammenhängend ) als bei den anderen..

    Wenn man das hinzufügen möchte muss man einiges umstricken in der Bar... und da habe ich leider gerade keine Zeit für...
    Es bleibt dir leider nur die Möglichkeit die normalen kleinen Buttons zu nutzen oder dir die Funktion _RibbonsBar_Create_SmallButton genauer anzugucken und anzupassen..

    MFG chris :D

  • hallo zusammen,

    entweder hab ich's überlesen oder ich bin blind :)

    wie bekomme ich denn den text von einem button in eine variable?
    hier im beispiel "PC" und "Sonstiges"

    [autoit]


    $012 = _RibbonsBar_Create_GrandButton($hItem_Il, '', 78, 'PC')
    $013 = _RibbonsBar_Create_GrandButton($hItem_Il, '', 271, 'Sonstiges')

    [/autoit]

    hat jemand eine hilfestellung für mich

    danke

    gruß gmmg ;)

  • hab es jetzt anders gemacht!
    und zwar habe ich jetzt die variable im case zweig zugewiesen ...

    [autoit][/autoit][autoit][/autoit][autoit]

    Case $012
    $gda = 'PC'
    _list()
    Case $013
    $gda = 'Sonstiges'
    _list()

    [/autoit][autoit][/autoit][autoit][/autoit]

    wäre trotzdem interessant, wie man den text des buttons bekommt...
    hab auch mal ein bild angehangen ...

    gruß gmmg

  • Passe dir doch einfach die UDF an, beim erzeugen des Buttons wird die Variable gespeichert.

    Oder du packst die Rückgabe der Erstellen-Funktion in ein Array, in das zweite Element packst du dann den Text, oder...

    Gruß,
    Matthias

  • Servus...

    Ich hoffe das ist das was du suchst...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include 'Ribbonsbar.au3'
    #include <array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate ( "test", 800, 500, -1, -1)
    GUISetBkColor( 0x99B9E3 )
    $hBar = _RibbonsBar_Create( $hGui, 0, 0, 800, 0, 'blue')

    [/autoit] [autoit][/autoit] [autoit]

    $hTab_Start = _RibbonsBar_Create_Tab( $hBar, 'Start' )

    [/autoit] [autoit][/autoit] [autoit]

    $hItem_Zwischenablage = _RibbonsBar_Create_TabItem ( $hTab_Start, 'Zwischenablage' , 163 )
    $hGrandButton_Einfuegen = _RibbonsBar_Create_GrandButton($hItem_Zwischenablage,'',467,'Var1',52, True )
    $hGrandButton_Test = _RibbonsBar_Create_GrandButton($hItem_Zwischenablage,'',47,'Var2',52, True )

    [/autoit] [autoit][/autoit] [autoit]

    _RibbonsBar_Tab_SetState($hTab_Start);aktiven Tab setzen
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Switch _RibbonsBar_GetMsg()
    Case -3
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $hGrandButton_Einfuegen

    [/autoit] [autoit][/autoit] [autoit]

    ; $Bar_CreateGrandButton_Array ist der Array Speicher in dem alle GrandButtons erstellt werden
    ; Hier findest du dann auch unter dem richtigen Buttonhandle das passende Handel zum Label um es aus zu lesen.
    ;~ _ArrayDisplay($Bar_CreateGrandButton_Array)
    ; Um das Handle des richtigen Labels jetzt zu finden suchen wir es mit _array2DSearch()
    $return = _Array2DSearch($Bar_CreateGrandButton_Array,$hGrandButton_Einfuegen,-1,1,0,0,False,True)
    if IsArray($return) Then
    ;Durch die Suche bekommen wir die Zeile im Array raus...
    ;...dann nur noch das Ergebnis etwas beschneiden
    ;...und damit dann aus der 6ten Spalte den Handle des Labels herausfinden..
    ;...dann das Label auslesen ... Puhhh das alles in 1er Zeile ;)
    $ButtonText = GUICtrlRead($Bar_CreateGrandButton_Array[StringTrimRight($return[0],2)][6])
    EndIf
    MsgBox (0,"Aktueller Text vom gedrücktem Buttom",$ButtonText)

    [/autoit] [autoit][/autoit] [autoit]

    Case $hGrandButton_Test
    ; Eigentlich alles gleich bis das du darauf Achten musst das im Array2DSearch()
    ;...auch als Suchbegriff $hGrandButton_Test ist...
    $return = _Array2DSearch($Bar_CreateGrandButton_Array,$hGrandButton_Test,-1,1,0,0,False,True)
    if IsArray($return) Then
    $ButtonText = GUICtrlRead($Bar_CreateGrandButton_Array[StringTrimRight($return[0],2)][6])
    EndIf
    MsgBox (0,"Aktueller Text vom gedrücktem Buttom",$ButtonText)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ;----------------------------------------------------------------------------------------------------------------------
    ;AuthorBugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _Array2DSearch($avArray, $vWhat2Find, $iDim=-1, $iStart=0, $iEnd=0, $iCaseSense=0, $fPartialSearch=False, $1stFound=False)
    Local $error = 0, $1D, $arFound[1]=[0]
    If $1stFound Then $arFound[0] = -1
    If ( Not IsArray($avArray) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $UBound2nd = UBound($avArray,2)
    If @error = 2 Then $1D = True
    If ( $iEnd = 0 ) Or ( $iEnd = -1 ) Then $iEnd = UBound($avArray)-1
    If $iStart = -1 Then $iStart = 0
    If $iCaseSense = -1 Then $iCaseSense = 0
    If $iCaseSense <> 0 Then $iCaseSense = 1
    Select
    Case ( $iDim > $UBound2nd ) Or ( $iDim < -1 )
    $error += 2
    Case ( $iStart < 0 ) Or ( $iStart > UBound($avArray)-1 )
    $error += 4
    Case ( $iEnd < $iStart ) Or ( $iEnd > UBound($avArray)-1 )
    $error += 8
    EndSelect
    If $error <> 0 Then
    SetError($error)
    Return 0
    EndIf
    If $fPartialSearch <> True Then $fPartialSearch = False
    If $1D Then
    For $i = $iStart To $iEnd
    Select
    Case $iCaseSense = 0 And (Not $fPartialSearch)
    If $avArray[$i] = $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 1 And (Not $fPartialSearch)
    If $avArray[$i] == $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 0 And $fPartialSearch
    If StringInStr($avArray[$i], $vWhat2Find) Then
    If $1stFound Then
    $arFound[0] = $i
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 1 And $fPartialSearch
    If StringInStr($avArray[$i], $vWhat2Find, 1) Then
    If $1stFound Then
    $arFound[0] = $i
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i
    $arFound[0] += 1
    EndIf
    EndIf
    EndSelect
    Next
    Else
    For $i = $iStart To $iEnd
    If $iDim = -1 Then
    Select
    Case $iCaseSense = 0 And (Not $fPartialSearch)
    For $k = 0 To $UBound2nd-1
    If $avArray[$i][$k] = $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $k
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $k
    $arFound[0] += 1
    EndIf
    EndIf
    Next
    Case $iCaseSense = 1 And (Not $fPartialSearch)
    For $k = 0 To $UBound2nd-1
    If $avArray[$i][$k] == $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $k
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $k
    $arFound[0] += 1
    EndIf
    EndIf
    Next
    Case $iCaseSense = 0 And $fPartialSearch
    For $k = 0 To $UBound2nd-1
    If StringInStr($avArray[$i][$k], $vWhat2Find) Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $k
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $k
    $arFound[0] += 1
    EndIf
    EndIf
    Next
    Case $iCaseSense = 1 And $fPartialSearch
    For $k = 0 To $UBound2nd-1
    If StringInStr($avArray[$i][$k], $vWhat2Find, 1) Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $k
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $k
    $arFound[0] += 1
    EndIf
    EndIf
    Next
    EndSelect
    Else
    Select
    Case $iCaseSense = 0 And (Not $fPartialSearch)
    If $avArray[$i][$iDim] = $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $iDim
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $iDim
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 1 And (Not $fPartialSearch)
    If $avArray[$i][$iDim] == $vWhat2Find Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $iDim
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $iDim
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 0 And $fPartialSearch
    If StringInStr($avArray[$i][$iDim], $vWhat2Find) Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $iDim
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $iDim
    $arFound[0] += 1
    EndIf
    EndIf
    Case $iCaseSense = 1 And $fPartialSearch
    If StringInStr($avArray[$i][$iDim], $vWhat2Find, 1) Then
    If $1stFound Then
    $arFound[0] = $i & '|' & $iDim
    Return $arFound
    Else
    ReDim $arFound[UBound($arFound)+1]
    $arFound[UBound($arFound)-1] = $i & '|' & $iDim
    $arFound[0] += 1
    EndIf
    EndIf
    EndSelect
    EndIf
    Next
    EndIf
    Return $arFound
    EndFunc ;==>_Array2DSearch

    [/autoit]

    MFG chris :D

    • Offizieller Beitrag

    [OT]
    zur Funktion _Array2DSearch()
    Seit Prod 3.2.12.0 funktioniert _ArraySearch() auch mit 2D-Array (Suche des ersten Vorkommens eines Wertes) und mit _ArrayFindAll() werden alle Vorkommen eines Suchwertes zurückgegeben.
    ( Da ist meine Funktion aber flexibler, da sie dies optional beides tut. :D )
    [/OT]

  • [OT]
    zur Funktion _Array2DSearch()
    Seit Prod 3.2.12.0 funktioniert _ArraySearch() auch mit 2D-Array (Suche des ersten Vorkommens eines Wertes) und mit _ArrayFindAll() werden alle Vorkommen eines Suchwertes zurückgegeben.
    ( Da ist meine Funktion aber flexibler, da sie dies optional beides tut. :D )
    [/OT]

    Danke ^^ das wusste ich auch noch nicht ;)
    Kommt davon wenn man immer auf gewohnte Funktionen zurückgreift wo man weiß das sie fuktionieren ;)

    MFG chris :D

  • chrisatack, läuft eigenlich noch was mit der UDF? Ich finde das super praktisch, wenn der Funktionsumfang erweitert werden würde! Was mir auch noch einfällt: Beim Doppelklick auf einen Tab, werden selbige ja normalerweise ausgeblendet. Das wäre auch noch eine Funktion wert! :)

  • Nein zur Zeit leider nicht....
    Ich weiß auch nicht ob es sich lohnt diese UDF zu erweitern...

    1. es gibt Office 2010. Das noch etwas schöner aussieht...
    2. Wenn dann würde ich alles mit SQLite machen anstatt array...
    3. Grafik alles mit GDI
    4. Hover.au3 benutzen...

    Mal gucken wenn ich etwas Zeit im neuen Jahr bekomme und meine jetztigen Projekte fertig sind...
    Aber ich habe es immer noch im Hinterkopf ^^
    Vieleicht sollten wir es dann auch als Gemeinschaftsprojekt machen?

    MFG chris :D

  • Das finde ich sehr schade!

    Aber als Gemsinschaftsprojekt wäre das wirklich sicher gut geeignet!

    Viele Grüße,
    Matthias

  • Hallo,
    ich würde ja empfehlen, wenn man die Farbe der Bar (mittels ARGB oder RGB Code [sowas: 0xFFFFFF] ) verändern kann.

    Sonst echt klasse, werde es vlt. in meinem nächsten Projekt verwenden!

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%