Как использовать minWidth, minHeight DevExpress LayoutControl? - PullRequest
2 голосов
/ 19 августа 2010

Я начал немного использовать DevExpress LayoutControl.Это кажется мощным, но я не понимаю, как хочу.Я хочу установить минимальную ширину и минимальную высоту компонентов, поскольку у вас не может быть очень маленького диалога, и он все равно выглядит хорошо.В то же время я хочу, чтобы пользователь имел произвольный большой размер, и чтобы компоненты имели равную долю ширины и высоты.И я не хочу никаких полос прокрутки.Как я могу это сделать?

И одна вещь.Я все еще использую старую версию 6.38 Devexpress из-за других обстоятельств.Много ли исправлено ошибок в последних версиях LayoutControl?Может ли это остановить меня?

/ Роланд

1 Ответ

1 голос
/ 20 августа 2010

Я не думаю, что вы можете указать минимальную высоту / ширину элементов управления в LayoutControl. Конечно, вы можете использовать стандартное свойство constraints, оно будет работать, но будет выглядеть ужасно.

Вопрос в том, чего именно вы пытаетесь достичь? LayoutControl пытается настроить размеры элементов управления так, чтобы все подходило как можно лучше. Когда многие элементы управления упакованы в слишком мало места, появляются полосы прокрутки, но что еще может произойти?

Ключом к настройке хорошего макета с изменяемым размером является настройка AlignHoriz и AlignVert свойств элементов / групп макета. Установите для них значение ahClient/avClient для элементов управления с изменяемым размером, например, Memo или Grid. Также вы обычно хотите, чтобы LayoutControls AutoContentSizes был [acsWidth,acsHeight]

И, говоря о версиях, я бы порекомендовал вам обновить до последней сборки и попробовать LayoutControl V2 , который имеет некоторые дополнительные функции по сравнению с v1, такие как поддержка разделителей и вкладок.

Вот пример простой формы, которая логически изменяет размеры, вы можете вставить ее в пустую форму:

object dxLayoutControl1: TdxLayoutControl
  Align = alClient
  AutoContentSizes = [acsWidth, acsHeight]
  object Edit1: TEdit
    BorderStyle = bsNone
  end
  object Button1: TButton
  end
  object Memo1: TMemo
    BorderStyle = bsNone
  end
  object dxLayoutControl1Group_Root: TdxLayoutGroup
    ShowCaption = False
    Hidden = True
    ShowBorder = False
    object dxLayoutControl1Group1: TdxLayoutGroup
      AutoAligns = [aaHorizontal]
      AlignVert = avClient
      object dxLayoutControl1Group2: TdxLayoutGroup
        ShowCaption = False
        Hidden = True
        LayoutDirection = ldHorizontal
        ShowBorder = False
        object dxLayoutControl1Item1: TdxLayoutItem
          AutoAligns = [aaVertical]
          AlignHorz = ahClient
          Control = Edit1
        end
        object dxLayoutControl1Item2: TdxLayoutItem
          ShowCaption = False
          Control = Button1
          ControlOptions.ShowBorder = False
        end
      end
      object dxLayoutControl1Item3: TdxLayoutItem
        AutoAligns = [aaHorizontal]
        AlignVert = avClient
        Control = Memo1
      end
    end
  end
end

Надеюсь, это поможет

...