Seite 1 von 1

Toolbar Icon-Breite

Verfasst: 23.11.2013 16:51
von Micky91
Habe unter OSX erstmalig eine Toolbar angelegt. Wieso sind die Icons so weit voneinander entfernt? Und warum ist beim Separator 1. nichts zu sehen und 2. keine größere Lücke?
Screenshot:
Bild

So sieht das im Formulardesigner aus:
Bild

Re: Toolbar Icon-Breite

Verfasst: 24.11.2013 19:13
von Shardik
Micky91 hat geschrieben:Wieso sind die Icons so weit voneinander entfernt?
Dies ist das normale Aussehen bei OS X. Die Icons haben in der Tat einen sehr weiten Abstand, der nicht verringert werden kann. Die Ansicht im FormDesigner ist nur ein Skin, keine tatsächliche Darstellung. Deshalb sehen die Icons ja auch beim Entwurf wie in Deinem zweiten Foto und nach "Ansicht umschalten (Code/Design)" und Ausführung des generierten Codes wie im ersten Foto aus.
Micky91 hat geschrieben:Und warum ist beim Separator 1. nichts zu sehen und 2. keine größere Lücke?
Dies ist anscheinend ein Bug. Ich werde ihn gleich im englischen Bug-Forum melden.

Zum Beweis für meine Behauptungen habe ich das folgende Beispiel entwickelt: es zeigt 4 Icons aus dem Silk-Theme an und ruft mit einer Cocoa-API-Funktion von OS X ein Modifikationsfenster auf, in dem nach Belieben die Anordnung der Icons abgeändert werden kann und Trennbalken, Leerräume und Platzhalter (zum Verschieben eines Icons an den rechten Rand) eingefügt werden können:

Code: Alles auswählen

#SilkThemePath = #PB_Compiler_Home + "Themes/"
#IconNameList = "disk.png+delete.png+arrow_left.png+arrow_right.png"

UsePNGImageDecoder()
UseZipPacker()

OpenWindow(0, 270, 100, 290, 50, "Abänderbare Werkzeugleiste")
CreateToolBar(0, WindowID(0))

If OpenPack(0, #SilkThemePath + "SilkTheme.zip")
  *ImageBuffer = AllocateMemory(1024)

  If ExaminePack(0)
    For i = 0 To CountString(#IconNameList, "+")
      ImageSize = UncompressPackMemory(0, *ImageBuffer, MemorySize(*ImageBuffer),
        StringField(#IconNameList, i + 1, "+"))

      If ImageSize > 0
        If CatchImage(i, *ImageBuffer, ImageSize)
          ToolBarImageButton(i, ImageID(i))
        EndIf
      EndIf
    Next i
  EndIf

  FreeMemory(*ImageBuffer)
EndIf

; ----- Zeige ToolBar-Konfigurationsfenster an
CocoaMessage(0, ToolBarID(0), "runCustomizationPalette:", ToolBarID(0))

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Ergänzung: Ich habe die nicht funktionierende Anweisung ToolBarSeparator() im englischen Unterforum "Bugs Mac OSX" gemeldet und auch gleich einen Workaround gezeigt, der einen Trennstrich zwischen zwei Icons einfügt (ganz so wie es ToolBarSeparator() eigentlich machen sollte):
http://www.purebasic.fr/english/viewtop ... 24&t=57487