Jump to content

Ширина подписи uniSpinEdit


x11

Recommended Posts

Я указывал разные значения для FieldLabelWidth: 70, 80 и даже 100.

Все равно подпись очень маленькая. А должно быть так, как на третьей картинке.

Screenshot_2.jpg

Screenshot_3.jpg

Screenshot_4.jpg

Link to comment
Share on other sites

  • 4 weeks later...
On 1/27/2021 at 5:06 PM, x11 said:

Я указывал разные значения для FieldLabelWidth: 70, 80 и даже 100.

На данный момент, попробуйте указать большое значение, например - 250

  • Like 1
Link to comment
Share on other sites

  • 3 months later...
  object UniComboBox1: TUniComboBox
    Left = 35
    Top = 55
    Width = 174
    Hint = ''
    Text = 'UniComboBox1'
    Anchors = [akTop, akRight]
    TabOrder = 0
    ScreenMask.Enabled = True
    FieldLabel = 'Convert a web page Convert a web page Convert a web page'
    FieldLabelWidth = 300
    FieldLabelAlign = laTop
    IconItems = <>
  end

Добрый день. Скажите, можно ли как-то FieldLabel сделать шире, например, комбобокса и вообще любого подходящего компонента? Пробую FieldLabelWidth сделать шире, но это никак не влияет на ширину FieldLabel.

Link to comment
Share on other sites

13 hours ago, Tokay said:

Добрый день. Скажите, можно ли как-то FieldLabel сделать шире, например, комбобокса и вообще любого подходящего компонента? Пробую FieldLabelWidth сделать шире, но это никак не влияет на ширину FieldLabel.

Добрый день, 

Уточните, пожалуйста, Ваш случай.

Link to comment
Share on other sites

Мне необходимо, что бы метка (FieldLabel) была шире, чем сам TUniComboBox. Сейчас метка wrapp'ится по ширине TUniComboBox'а. От свойства FieldLabelWidth = 300 wrap никак не зависит.

Link to comment
Share on other sites

1 hour ago, Tokay said:

Мне необходимо, что бы метка (FieldLabel) была шире, чем сам TUniComboBox. Сейчас метка wrapp'ится по ширине TUniComboBox'а. От свойства FieldLabelWidth = 300 wrap никак не зависит.

Да. Хочу отметить, что это нормальное поведение. Поскольку ширина combobox'а определяет максимальную ширину компонента в целом.

Но, Вы можете использовать этот трюк, чтобы достичь желаемого результата:

procedure TMainForm.UniFormCreate(Sender: TObject);
begin
  with UniComboBox1 do
    if FieldLabel<>'' then
      JSInterface.JSConfig('minWidth', [Width + FieldLabelWidth]);

end;

 

Link to comment
Share on other sites

Quote

Да. Хочу отметить, что это нормальное поведение

После TLabeledEdit поведение несколько неожиданное. Мне кажется, что лучше бы компонента учитывала размер указанный FieldLabelWidth.

Quote

Но, Вы можете использовать этот трюк, чтобы достичь желаемого результата:

Результат не такой, какой нужен. Нужно что бы комбобокс был шириной 174. а метка была шириной 300, как это и указано в dfm. Ваш код расширяет и комбобокс и метку, а это не нужно. Нужно отображение подобное TLabeledEdit в VCL, если такое вообще возможно, спасибо.

Link to comment
Share on other sites

5 hours ago, Tokay said:

После TLabeledEdit поведение несколько неожиданное.

?

5 hours ago, Tokay said:

Результат не такой, какой нужен. Нужно что бы комбобокс был шириной 174. а метка была шириной 300, как это и указано в dfm. Ваш код расширяет и комбобокс и метку, а это не нужно.

Одно другому не противоречит?

5 hours ago, Tokay said:

TLabeledEdit в VCL, если такое вообще возможно

Возможно, Вы хотите установить FieldLabelAlign = laTop ?

Link to comment
Share on other sites

Quote

Одно другому не противоречит?

Как же оно может противоречить, если я явно задаю ширину метки, а вместо этого получаю врап на границе комбобокса? 😀

Тогда нужно или программно запрещать делать метку шире чем комбобокс или отрисовывать согласно установленному размеру. Если мне будет нужно отобразить заврпленную метку, то я ширину (FieldLabelWidth) трогать вообще не будут, то есть оставлю дефолтно = 0 и вот тогда, конечно, нужно её рисовать ровно по границе комбобокса.

Quote

Возможно, Вы хотите установить FieldLabelAlign = laTop ?

Да. Уже установлено.

Link to comment
Share on other sites

Может быть до сих пор непонятно что нужно? Приведу пример.

image.png.7ada1c0972fe40c8d23e0ce2257b6422.png

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

Link to comment
Share on other sites

9 hours ago, Tokay said:

Вот комбо с надписью сверху. Хочется что бы комбо осталось того же размера, а надпись растянулась, например, на 400 пикселей.

Попробуйте это решение:

procedure TMainForm.UniFormCreate(Sender: TObject);
begin
  with UniComboBox1 do
    if (FieldLabel <> '') and (FieldLabelAlign = laTop) and (FieldLabelWidth > Width) then
      JSInterface.JSAddListener(
        'afterrender',
        'function(me){'+
        '    me.bodyEl.setStyle("position", "absolute");'+
        '    me.bodyEl.setStyle("width", "'+ Width.ToString() +'px");'+
        '    me.bodyEl.setStyle("min-width", "'+ Width.ToString() +'px");'+
        '    me.setWidth('+ FieldLabelWidth.ToString() +')'+
        '}'
      );

end;

 

Link to comment
Share on other sites

Сделал. Метка стала шире. Но выглядит как-то странно, комбо по высоте разъехалось вниз на сотни пикселей (на скриншоте часть формы):

 

image.png.95bb9cc540d88728f86a4db90a504a13.png

 

Link to comment
Share on other sites

2 hours ago, Tokay said:

Сделал. Метка стала шире. Но выглядит как-то странно, комбо по высоте разъехалось вниз на сотни пикселей (на скриншоте часть формы):

Сможете сделать тестовый случай?

Link to comment
Share on other sites

  • 3 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...