RibbonsBar (Office 2007 Bar) UDF

  • Sieht ziemlich gut aus. Ich habe versucht mit dem UDF etwas auf die Schnelle zu basteln, bin da aber auch gleich in ein Problem reingelaufen.
    Wenn ich ein Button, Radio Buttons oder eine Input box über die Ribbonsbar positioniere funktionieren die nicht. Was mache ich da falsch?

    Spoiler anzeigen

    #include 'modernGui.au3'
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTab.au3>
    #Include <GuiButton.au3>
    #Include <GuiEdit.au3>
    #Include <GuiListBox.au3>


    $MAIN_WINDOW = GUICreate ( "SDOC2", 620,500 ,-1,-1 )
    GUISetBkColor( 0x99B9E3 )

    $hBar = _modernGui_Bar_Create($MAIN_WINDOW, 0, 0, 800 ,0 )
    $hMain = _modernGui_Bar_CreateTab( $hBar , ' Main ' )
    $hMain_Area_Credentials = _modernGui_Bar_CreateTabArea ( $hMain, 'Credentials' , 220 )
    $hMain_Area_Format = _modernGui_Bar_CreateTabArea ( $hMain, 'Output format' , 170 )
    $hMain_Area_Status = _modernGui_Bar_CreateTabArea ( $hMain, 'Status' , 200 )
    $Button_Einfuegen1 = _modernGui_Bar_CreateGrandButton($hMain_Area_Credentials,@ScriptDir&'\images\icons\513.png')

    $hScan = _modernGui_Bar_CreateTab( $hBar , ' Scan ' )
    $hScan_Area_Settings = _modernGui_Bar_CreateTabArea ( $hScan, ' Settings ' , 300)

    $hExport = _modernGui_Bar_CreateTab( $hBar , ' Export ' )
    $hExport_Area_Format = _modernGui_Bar_CreateTabArea ( $hExport, ' Format ' , 300)

    _modernGui_Bar_SetVisibleTab( $hMain)


    $Tab = GUICtrlCreateTab(0, 25, 619, 470, $TCS_FIXEDWIDTH) ;~ =========================================== Create Tabs
    ;$hTab = GUICtrlGetHandle($Tab)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)


    $TabSheet1 = GUICtrlCreateTabItem("TabSheet0") ; ------- TAB 1 Start

    $InpUserID = GUICtrlCreateInput("Domain\UserID", 70, 38, 137, 20)
    $InpPassword = GUICtrlCreateInput("Password", 70, 65, 137, 21, BitOR($ES_PASSWORD, $ES_AUTOHSCROLL))

    $Radio_TXT = GUICtrlCreateRadio("Text", 250, 50, 50, 17)
    $Radio_OnlyDB = GUICtrlCreateRadio("DB", 330, 50, 40, 17)

    $Systeminput = GUICtrlCreateInput("", 60, 155, 200, 22)
    $Button_1 = GUICtrlCreateButton("Add System", 320, 155, 91, 25, $BS_DEFPUSHBUTTON)


    $TabSheet2 = GUICtrlCreateTabItem("TabSheet1") ; ------- TAB 2 Start

    $Eulatext = @CRLF & @TAB & "Bla Bla Bla Bla" & @CRLF & @CRLF & _
    @TAB & "Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla " & @CRLF & @CRLF & _
    @TAB & "Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla" & @CRLF & _
    @TAB & "Bla Bla Bla Bla" & @CRLF & _
    @TAB & "Bla Bla Bla Bla" & @CRLF
    $Label_EulaText = GUICtrlCreateLabel($Eulatext, 15, 137, 590, 330, -1, -1)
    GUICtrlSetFont(-1, 9, 400, 0, "Verdana")
    GUICtrlSetColor(-1, 0x00344D)
    GUICtrlSetBkColor(-1, 0xFFFFFF)


    $TabSheet2 = GUICtrlCreateTabItem("TabSheet3") ; ------- TAB 3 Start
    $Button_2 = GUICtrlCreateButton("Button_1", 40, 45, 91, 25)


    GUICtrlSetState($Tab, $GUI_HIDE)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)

    While 1
    Switch GUIGetMsg()

    Case $Button_1
    MsgBox (64,"test_1", "Button 1 funktionirt")
    Case $Button_2
    MsgBox (64,"test_2", "Button 2 funktionirt")

    Case -3
    Exit
    EndSwitch

    Switch _modernGui_Bar_GetMsg($MAIN_WINDOW)
    Case $hMain
    _modernGui_Bar_SetVisibleTab( $hMain )
    _GUICtrlTab_SetCurFocus($Tab, 0)

    Case $hScan
    _modernGui_Bar_SetVisibleTab( $hScan)
    _GUICtrlTab_SetCurFocus($Tab, 1)

    Case $hExport
    _modernGui_Bar_SetVisibleTab( $hExport )
    _GUICtrlTab_SetCurFocus($Tab, 2)
    GUISetState(@SW_SHOW, $MAIN_WINDOW)
    EndSwitch

    WEnd

  • hey....

    mmm also... du hast ja die v0.1 benutzt, da die v0.2 noch nicht fertig ist...musste noch etwas warten... denke aber mal noch diese Woche...
    Daher wirst du sowieso einige Probleme damit haben...da es nur mal nen öffentlicher Test war... Erst in der v0.2 werden alle Arten von Buttons mit Contextmenüs funzen...über Checkboxen habe ich noch nicht nachgedacht ... wäre aber vieleicht auch eine sinnvolle Idee...

    MFG chris :D

  • Ich habe es eben auch ohne dein UDF versucht …. wenn ich vorher mit GUICtrlCreatePic ein Bild erstelle (was Du mit deinem UDF auch machst) und danach oben drauf mit GUICtrlCreateButton oder ähnliches ein Button erstelle, kann man die Buttons nicht benutzen(muss jetzt nachschauen wie das geht). Hat also nichts mit deinem UDF zu tun.

  • @Christos :
    versuch ma die Buttons vor das bild zu setzten dann sollte es gehen^^

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]
  • johnnyboyy die Buttons funktionieren wenn ich das so mache wie Du vorgeschlagen hast, allerdings tauchen die erst auf wenn ich mit der Maus drüber gehe, vorher werden die durch die Ribbonsbar überdeckt.

    @simon danke für den Tipp das hatte ich mit dem $GUI_DISABLE vergessen, allerdings funktioniert es nur bei dem Scrip ohne das UDF. Wenn ich die Funktionen aus dem UDF verwende kann ich kein $GUI_DISABLE für diese verwenden. Das $GUI_DISABLE müsste im UDF selbst verwendet werden.

    Ich habe gesehen das im UDF öfters mit $GUI_DISABLE und $GUI_Hide hin und her jongliert wird, ich warte erst einmal auf die v0.2 bevor ich das v0.1 UDF anpasse. Wahrscheinlich hat Chrisatack bereits die Lösung dafür.

  • Hi Chrisatack,
    das sieht schon mal sehr gut aus das UDF ist ja mächtig gewachsen, das mit der Verzögerung kann man aber durch Reduzierung der Anzahl der Buttons hinbekommen.

    Naja ich habe es mit „normalen“ Inputboxen, Checkboxen und Radiobuttons ausprobiert das funktioniert leider immer noch nicht ;( . Ich werde mir das mal am Wochenende genauer anschauen. Ich gehe davon aus das irgendeiner stelle ein $GUI_DISABLE fehlt.

    Hast du eventuell eine Liste mit Nummern zu den dazugehörenden icons aus der grandicons.dll? da sind ja über 700 icons drin 8o

  • Morgen ....

    Also @christos "mit „normalen“ Inputboxen, Checkboxen und Radiobuttons" wird das auch so leicht vorerst noch nicht gehen... da die Elemente ja nicht wissen wann sie sichtbar und wann sie nicht sichtbar sein sollen. Mal gucken entweder mache ich die Steuerelemente komplett neu also mit Icons damit es auch in dem gleichen Style bleibt oder ich erstelle eine Möglichkeit normale Steuerelemente in die Bar einzustellen... wobei das erste nach meiner Meinung die wesentlich bessere Möglichkeit ist.

    Zu den Icons... Ich werde noch eine Übersicht erstellen wo man die 1784 SmallButtons und 720 GrandButtons sieht...

    MFG chris :D

  • Kann man irgendwie den Text der Small Buttons zentrieren?
    Kann man irgendwie Grand Buttons ohne den Pfeil noch unten zu machen?
    Kann man irgendwie eigene .png Bilder verwenden?

    Magnus

  • Also.....

    zentrieren des textes der SmallButtons ist noch nicht eingebaut. Kannst du aber relativ leicht anpassen, indem du in der RibbonsBar.au3 Zeile 272 ein ", $SS_CENTER" hinter die "14" hängst.

    Ändern der Pfeile für Grandbuttons ist schon möglich... habe dir mal ein Bsp. gemacht.

    [autoit]

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

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

    $hGui = GUICreate ( "test", 800, 500, -1, -1)
    GUISetBkColor( 0x99B9E3 );Gui HG Blau

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

    $hBar = _RibbonsBar_Create( $hGui, 0, 0, 800, 0, 'blue')
    $hTab_Start = _RibbonsBar_Create_Tab( $hBar, 'Start' )
    $hTab_Item = _RibbonsBar_Create_TabItem ( $hTab_Start,'Test', 400 )
    _RibbonsBar_Create_GrandButton ( $hTab_Item,'',166,'Einzeilig')
    _RibbonsBar_Create_GrandButton ( $hTab_Item,'',456,'Einzeilig','',True)
    _RibbonsBar_Create_GrandButton ( $hTab_Item,'',477,'Zwei -zeilig')
    If @error Then MsgBox ( 0,"",@error )

    [/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]

    EndSwitch
    WEnd

    [/autoit]

    Eigene PNGs sind möglich nur leider noch nicht als direkte PNG einbindung. Mit dem kostenlosen Programm IconFX kannst du total einfach meine dlls öffnen, leeren und deine eigenen PNGs die du vorher als Icons erstellt hast in die DLL einbinden. Wenn du willst kann ich dafür auch mal ne Anleitung schreiben.... ist aber echt total einfach ^^

    MFG chris :D

  • Was meinst du mit:

    Zitat

    Eigene PNGs sind möglich nur leider noch nicht als direkte PNG einbindung. Mit dem kostenlosen Programm IconFX kannst du total einfach meine dlls öffnen, leeren und deine eigenen PNGs die du vorher als Icons erstellt hast in die DLL einbinden. Wenn du willst kann ich dafür auch mal ne Anleitung schreiben.... ist aber echt total einfach ^^

    Magnus