Frage

Wie Sie das Gesicht Schriftart und Schriftgröße durch die Windows-Ribbon Framwork 's UIRibbon?

Die Schrift durch das Band verwendet wird, nicht die Schriftart entsprechen der Benutzer als ihre Windows-Einstellungen gewählt hat - was die Präferenz Verwendungen meine Anwendung ist. Dies bedeutet, dass die Schriftart in Windows wird immer größer, das Band kleiner wird.

Beachten Sie, wie das Band wird kleiner in jedem Screenshot:

Segoe UI 9pt (Windows-Standard)

alt text

Segoe UI 12pt (was ich verwende)

alt text

Segoe UI 16pt (was für Kunden zur Nutzung)

alt text

Sie können von der Zeit sehen wir 16pt bekommen, wird der Text auf dem Band ist ziemlich schwer zu lesen.

Hintergrund

Der Benutzer kann konfigurieren Sie Windows ihre bevorzugte Schriftgröße zu verwenden, , z.

  • 8pt
  • 9pt
  • 12 pt

und ihre bevorzugten font face , z.

  • MS Sans Serif
  • Microsoft Sans Serif
  • Tahoma
  • Segoe UI
  • Calibri

aber die Windows-Ribbon-Framework verwendet standardmäßig eine Schriftart, die ist nicht die Vorlieben des Benutzers.

Edit:. Verschoben Bild oben oben zu fangen Eichhörnchen durch glänze zogen
Edit 2: hinzugefügt eine andere bunte Bild, eine Beule bekommen
. Bearbeiten 3: Bearbeiten eine Beule
bekommen Bearbeiten 4: ein weiteres anderes Bild Hinzufügen eine Beule bekommen


Das Band erlaubt es die Anpassung der Farben des Bandes.

Das folgende Codefragment wird verwendet, um die UI_PKEY_GlobalBackgroundColor des Bandes einzustellen. In diesem Fall verwende ich eine Farbe, die der Benutzer hat derzeit Aero-Farbschema wählen:

    IUIFramework framework;
    ...

    TColor glass = Dwm.GetColorizationColor();
    VarCast(v, ColorToUIHSB(glass), UI_PKEY_GlobalBackgroundColor.pid);

    IPropertyStore ps = framework as IPropertyStore;
    ps.SetValue(UI_PKEY_GlobalBackgroundColor, PROPVARIANT(v));
    ps.Commit;

Und nun wird das Band nun farbig das Farbschema von Windows anzupassen:

Aber ich kann nicht die Möglichkeit finden, die Schriftart / Größe zu ändern.

. Hinweis: Während die Band können ehren die DPI-Einstellungen des Benutzers, die nicht ist diese Frage


Es funktioniert in Outlook 2010

Es könnte hilfreich sein, zu beachten, dass Outlook 2010 der Band Ehre macht den (Menü) Schriftart Präferenzen des Benutzers. Sie können die Benutzer-Menü Schriftart erhalten, indem [SystemParametersInfo][6] Aufruf:

SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));

ncm.lfMenuFont <---

9pt Outlook 2010

alt text

12pt Outlook 2010

alt text

12pt Outlook 2010

alt text

Beachten Sie die Band in der Größe zunimmt mit der Schriftgröße? (Was in dieser Größe verändert Screenshots, bedeutet, dass das Band nicht bekommen wahrnehmungs kleiner.)

Es gibt zwei Möglichkeiten:

  • Outlook 2010 weiß, wie die Schriftgröße in dem Windows-Ribbon-Framework anpassen
  • Outlook 2010 nicht den Windows-Ribbon-Framework verwenden

Windows 7 Farbe funktioniert nicht

Es ist auch nützlich, um zur Kenntnis, dass Windows in Windows Paint 7 hat nicht Ehre der Schrift Vorlieben des Benutzers. Dies führt mich zu glauben, dass es (mspaint) funktioniert den Windows-Ribbon-Framework verwenden, und dass der Windows-Ribbon-Framework unterstützt nicht eine Schriftgröße einstellen. Wenn, wenn Sie tatsächlich versucht haben, nützlich zu sein, und lesen Sie den ganzen Weg hinunter zu hier, werden Sie erkennen, das ist die richtige Antwort: es ist nicht möglich. Also, wenn Sie einen kostenlosen 300 rep mögen, fügen Sie, dass als Antwort.

Edit: Cross-posted Microsoft

Stichwort: Windows-Ribbon-Framework, Schriftgröße ändern, UIRibbon, Schriftart, Band ui, ui szenisch, landschaftlich Band, fließend Band, fließend ui, Änderungsguß Fenster Band, uiribbon.h

Microsoft hat eine Reihe von Band-Implementierungen:


MS Farbe nicht ehre Menü Schrift bevorzugt

Hier ist ein Screenshot zeigt mein konfigurierte Windows 7 Menü Schrift von 12 pt Einstellung, mit MSPaint sichtbar, und Outlook 2010 sichtbar für den Vergleich.

alt text


Beispielcode

type 
    TfrmRibbonTest = class(TForm, IUIApplication)
      ...
    private
       Fframework: IUIFramework;

       {IUIApplication}
       function  OnViewChanged(viewId: SYSUINT; typeID: UI_VIEWTYPE; const view: IUnknown; verb: UI_VIEWVERB; uReasonCode: SYSINT): HResult; stdcall;
       function  OnCreateUICommand(commandId: SYSUINT; typeID: UI_COMMANDTYPE; out commandHandler: IUICommandHandler): HResult; stdcall;
       function  OnDestroyUICommand(commandId: SYSUINT; typeID: UI_COMMANDTYPE; const commandHandler: IUICommandHandler): HResult; stdcall;
    end;


procedure TForm1.Button1Click(Sender: TObject);
var
   hr: HRESULT;
begin
   Fframework := CreateComObject(CLASS_UIRibbonFramework) as IUIFramework;
   hr := Fframework.Initialize(Self.Handle, Self); //we implement IUIApplication
   OleCheck(hr);
   hr := Fframework.LoadUI(hInstance, 'APPLICATION_RIBBON');
   OleCheck(hr);
end;

function TfrmRibbonTest.OnCreateUICommand(commandId: SYSUINT; typeID: UI_COMMANDTYPE; out commandHandler: IUICommandHandler): HResult;
begin
    Result := S_OK;
end;

function TfrmRibbonTest.OnDestroyUICommand(commandId: SYSUINT; typeID: UI_COMMANDTYPE;
  const commandHandler: IUICommandHandler): HResult;
begin
    Result := S_OK;
end;

function TfrmRibbonTest.OnViewChanged(viewId: SYSUINT; typeID: UI_VIEWTYPE; const view: IUnknown; verb: UI_VIEWVERB; uReasonCode: SYSINT): HResult;
begin
    Result := S_OK;
end;

Windows-Ribbon-Framework 14pt! = 14pt

Hier ist ein Screenshot von Windows Menü Schrift für 14pt konfiguriert (auf einer 96 dpi Maschine). Outlook 2010 ist 14pt, Photoshop CS3 ist 14pt. Das Band ist ... weniger.

alt text

Siehe auch

War es hilfreich?

Lösung

Basierend auf dem Verhalten von Windows 7 Farbe, scheint dies nicht möglich zu sein. :)

Andere Tipps

Ich bin nicht ganz sicher .. Sie den Windows-Ribbon-Framework in Delphi mit und bekam dieses seltsame Verhalten?

Ich habe gerade spielen mit dem Rahmen begonnen, aber die Band respektiert meine Vorlieben.

TUIApp = class(TInterfacedObject, IUIApplication)
...
gApp: TUIApp;
uiFrame: IUIFramework;
...
  CoCreateInstance(CLSID_UIRibbonFramework, nil, CLSCTX_INPROC_SERVER, IUIFramework, uiFrame);

  if Succeeded(uiFrame.Initialize(Handle, gApp)) then
  begin
     if not Succeeded(uiFrame.LoadUI(GetModuleHandle(nil), PChar('SIMPLERIBBON_RIBBON')))then
        sleep(5);
  end;

Das ist alles, was ich in meinem Test-Projekt zu tun.

Mit 9pt: alt text

Und mit 14pt: alt text

Vielleicht ändern Sie die falsche Option? Ich habe die Schriftgröße des „Menü“ Elements festgelegt.

Wenn Sie weitere Fragen haben, fragen Sie einfach ...


Ich habe gerade Win7 Farbe geprüft. Es spielt die Benutzereinstellungen respektieren. Deshalb ich denke, Sie etwas falsch gemacht haben oder wirklich die falsche Option geändert.


Wie Sie den Screenshot: alt text

Es sieht gerne wir das gleiche tat. Das ist ziemlich seltsam ...

  

Wenn, wenn Sie tatsächlich versucht haben, zu sein   hilfreich, und den ganzen Weg nach unten gelesen zu   hier werden Sie erkennen, das ist die   richtige Antwort: es ist nicht möglich. So   wenn Sie einen kostenlosen 300 rep mögen, können Sie hinzufügen   dass als Antwort.

Da ich nicht schreiben kann, dass als Antwort (George bekam dort erste :)), und da Sie scheinen verzweifelt eine Art von Lösung brauchen, werde ich die nur schreiben verwenden Sie eine andere Band Kontrolle Sie sagen nicht, warum Sie diese Implementierung verwenden anstelle von Delphi eigenen oder auch eines der anderen Microsoft: andere hilfreiche Antwort oder Empfehlung, die ich geben kann Ihr Problem zu lösen. diejenigen.

Zwei Optionen sind:

  • Die eingebaute Delphi TRibbon Kontrolle. Ich habe das nicht in all öffentlich veröffentlichten Anwendungen verwendet, aber ich habe in meinem eigenen kleinen / Prüfprogramme und es ist ein wenig Buggy in Orten. (Ich habe in dem Shortcut-Leiste, was auf der Titelleiste ungeradee Zeichnung Probleme gesehen, zum Beispiel.) Das kann in Delphi XE verbessert haben. Es ist möglich, es leidet an einem ähnlichen Fehler . Allerdings ist es mit Delphi ausgeliefert, „frei“, wenn Sie Delphi haben, nativen Code, VCL und eine VCL-Komponente ist, kommt mit der Quelle, so dass Sie die Dinge bei Bedarf beheben können.

  • Die TMS Ribbon Control . Ich habe es nicht, aber ich habe verwendet anderen TMS Steuer . Das Kontrolle ist gut, und ihre Unterstützung behebt Fehler schnell. (Ich habe eine Bestätigung eines Fehlers an einem Tag hatte, so „sofort“ Zählen Zeitzonen, und ein Neubau in wenigen Tagen veröffentlicht.)

Ich glaube, andere Komponentenlieferanten Band Komponenten machen kann, und ich erinnere mich an jemanden Lesen einer SpTBXLib Modifikation machen Ribbon-Steuerelemente enthält, aber ich habe nicht viel von ihnen gehört. Mein Vorschlag ist, auf verwenden, um die TMS Band .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top