Кнопка со значком и меткой - PullRequest
0 голосов
/ 12 марта 2020

Здравствуйте. В настоящее время я ищу способ отображения кнопки со значком и надписью.

Я хочу, чтобы значок был слева, а метка выровнена по левому краю справа от значка. .

Я не думаю, что это возможно в openge, но, возможно, у кого-то есть идея для этого.

Я использую abl-frame, и кнопка должна генерироваться динамически

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

У меня для вас очень уродливое решение:

Создайте изображение, содержащее все лицо кнопки. Значок и текст включены. Возможно, это не очень хорошее решение, но вам не нужно его использовать. Net.

По сути, он просто добавит атрибут IMAGE-UP для кнопки.

DEFINE BUTTON BUTTON-3 
     IMAGE-UP FILE "c:/temp/button.png":U
     LABEL "Button 3" 
     SIZE 48 BY 4.29.

button.png :

Button image

Добавьте это изображение к своей кнопке.

Property sheet

Результат:

enter image description here

Если вам нужно установить разные Для изображений, основанных на контрасте, необходимо проверить реестр для настройки контрастности. Это можно сделать примерно так:

DEFINE VARIABLE cContrast AS CHARACTER NO-UNDO.

LOAD "Control Panel" BASE-KEY "HKEY_CURRENT_USER".  
USE "Control Panel".

GET-KEY-VALUE SECTION "Accessibility\HighContrast" KEY "Flags" VALUE cContrast.

UNLOAD "Control Panel".

IF cContrast = "126" THEN 
    MESSAGE "Low contrast" VIEW-AS ALERT-BOX.
ELSE IF cContrast = "127" THEN 
    MESSAGE "High contrast" VIEW-AS ALERT-BOX.
1 голос
/ 12 марта 2020

Если у вас не полностью устаревшая версия Progress OpenEdge, вы можете использовать. Net элементы управления, визуальный дизайнер в Progress Developer Studio для OpenEdge (PDSOE) позволит вам перетаскивать следующие элементы вместе:

enter image description here

Создается следующий исходный код (который также можно использовать для создания формы):

USING Progress.Lang.*.
USING Progress.Windows.Form.

BLOCK-LEVEL ON ERROR UNDO, THROW.

CLASS button INHERITS Form: 

   DEFINE PRIVATE VARIABLE button1 AS System.Windows.Forms.Button NO-UNDO.
   DEFINE PRIVATE VARIABLE components AS System.ComponentModel.IContainer NO-UNDO.


   CONSTRUCTOR PUBLIC button (  ):


      SUPER().
      InitializeComponent().
      THIS-OBJECT:ComponentsCollection:ADD(THIS-OBJECT:components).
      CATCH e AS Progress.Lang.Error:
         UNDO, THROW e.
      END CATCH.

   END CONSTRUCTOR.

   METHOD PRIVATE VOID InitializeComponent(  ):

      /* NOTE: The following method is automatically generated.

      We strongly suggest that the contents of this method only be modified using the
      Visual Designer to avoid any incompatible modifications.

      Modifying the contents of this method using a code editor will invalidate any support for this file. */
      @VisualDesigner.FormMember (NeedsInitialize="true").
      DEFINE VARIABLE resources AS Progress.Util.ResourceManager NO-UNDO.
      resources = NEW Progress.Util.ResourceManager("button").
      THIS-OBJECT:button1 = NEW System.Windows.Forms.Button().
      THIS-OBJECT:SuspendLayout().
      /*  */
      /* button1 */
      /*  */
      THIS-OBJECT:button1:Image = CAST(resources:GetObject("button1.Image"), System.Drawing.Image).
      THIS-OBJECT:button1:ImageAlign = System.Drawing.ContentAlignment:MiddleLeft.
      THIS-OBJECT:button1:Location = NEW System.Drawing.Point(13, 212).
      THIS-OBJECT:button1:Name = "button1".
      THIS-OBJECT:button1:Size = NEW System.Drawing.Size(108, 42).
      THIS-OBJECT:button1:TabIndex = 0.
      THIS-OBJECT:button1:Text = "Exit".
      THIS-OBJECT:button1:TextAlign = System.Drawing.ContentAlignment:MiddleRight.
      THIS-OBJECT:button1:UseCompatibleTextRendering = TRUE.
      THIS-OBJECT:button1:UseVisualStyleBackColor = TRUE.
      /*  */
      /* button */
      /*  */
      THIS-OBJECT:ClientSize = NEW System.Drawing.Size(292, 266).
      THIS-OBJECT:Controls:Add(THIS-OBJECT:button1).
      THIS-OBJECT:Name = "button".
      THIS-OBJECT:Text = "button".
      THIS-OBJECT:ResumeLayout(FALSE).
      CATCH e AS Progress.Lang.Error:
         UNDO, THROW e.
      END CATCH.
   END METHOD.

   DESTRUCTOR PUBLIC button ( ):

   END DESTRUCTOR.

END CLASS.

Метод перетаскивания также по умолчанию создаст файл resx, который является xml файлом, содержащим используемые ресурсы, изображение там закодировано:

  <data mimetype="application/x-microsoft.net.object.bytearray.base64" name="button1.Image" type="System.Drawing.Bitmap, System.Drawing">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
        wgAADsIBFShKgAAAAJFJREFUOE/N0EEOgCAMRFEP4tL738wz1CaDQYa2FmThX5FIH8gmi/otdO4HFtNV
        aNSikfproxZtbt4ob/Xb+LEzkHmeAcWW95Uh5O0OjslCIDxFsyHtORMTyIU0DGcULYK0pKK93AjK/I3o
        Ip+gsrojuo+hYCC2Gig+E3lchTIKMq0Ceed49fvtx860DKIWQSIXxapUG1GIZgoAAAAASUVORK5CYII=
</value>

При создании форм с кодом вам не нужны файлы resx и можно загружать изображения et c из файловой системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...