Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus. TLabel.AutoSize в OnResize / 16 сообщений из 16, страница 1 из 1
24.10.2018, 20:53
    #39722480
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Код, который работал в Delphi, странно работает в Lazarus. В OnShow формы работает как надо, а в OnResize TempLabel.Width всегда равно 65.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
var
  TempLabel: TLabel;
  I: Integer;
begin
  // подгоняем ширину TEdit по длине текста как это делает TLabel
  TempLabel := TLabel.Create(Self);
  TempLabel.Parent := Panel1;
  TempLabel.Top := 8;
  TempLabel.Left := 8;
  TempLabel.AutoSize := True;

  for I := 0 to ComponentCount-1 do
  begin
    if Components[I].InheritsFrom(TEdit) and (TEdit(Components[I]).BorderStyle = bsNone) then
    begin
      TempLabel.Font := TEdit(Components[I]).Font;
      TempLabel.Caption := TEdit(Components[I]).Text;
      TEdit(Components[I]).Width := TempLabel.Width;
    end;
  end;

  TempLabel.Free; 



Если повесить этот код на кнопку и выполнить, то всё выпрямляется. Глючит именно в OnResize.
Есть предположения ?

Lazarus 1.8.4 x86
...
Рейтинг: 0 / 0
24.10.2018, 22:00
    #39722491
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Ghost Writer,

тут читал?
...
Рейтинг: 0 / 0
24.10.2018, 23:11
    #39722512
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Док,

спасибо. посмотрел, ужаснулся. особенно это
Код: pascal
1.
2.
3.
4.
5.
procedure TMainForm.FormResize(Sender: TObject);
begin
  // if Button1 is anchored or AutoSize=true then the following might create an endless loop:
  Button1.Width:=100;
end;

заменил TLabel на TCanvas
...
Рейтинг: 0 / 0
25.10.2018, 00:24
    #39722531
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Ghost Writerпосмотрел, ужаснулся.
аналогичный случай описан в ФАКе, только для стрингрида. Решение: использовать OnResize самого контрола, а не родителя(формы). Насколько я понял, это плата за кроссплатформенность с ее разными виджетсетами.
...
Рейтинг: 0 / 0
25.10.2018, 13:16
    #39722783
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Док,

ДокOnResize самого контрола, а не родителя(формы).это значит так что ли ? ))
Код: pascal
1.
2.
3.
4.
procedure TForm1.Label1Resize(Sender: TObject);
begin
  Label1.Width := 100;
end; 


у меня проблема обнаружилась в TPanel.OnResize, а уже потом стал пробовать OnResize формы.
...
Рейтинг: 0 / 0
25.10.2018, 13:33
    #39722796
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Ghost Writerэто значит так что ли ? ))
ХЗ, навскидку не скажу. Это надо в самой среде пробовать. А новый проект делать лень :) ИМХО, хорошим тоном считается выкладывать минимальный тестовый проект, чтоб другие могли сразу загрузить и погонять (в Лазаре есть соответствующий пункт в меню, типа Project's export).

Единственный мой случай , когда задаваемый в runtime размер не соответствовал ожидаемому, проявился на Gnome3 (в винде все отображалось корректно). Код, подсказанный Казанцевым, решил проблему
...
Рейтинг: 0 / 0
25.10.2018, 13:46
    #39722809
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Док Единственный мой случай я помню эту тему, первым делом посмотрел ее.
Тут кода две строчки, быстрее создать проект, чем скачивать, распаковывать, да еще проверять на вирусы )))
...
Рейтинг: 0 / 0
25.10.2018, 15:21
    #39722890
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Ghost Writerбыстрее создать проект, чем скачивать, распаковывать
не быстрее :)

Докесть соответствующий пункт в меню, типа Project's export
Щас глянул, он правильно называется Project --> Publish Project...
Начиная с v.2.1.x, оно теперь может автоматичеcки архивироваться в zip (куда наконец-то стала автоматом цепляться и иконка приложения: мелочь, а приходилось следить :) )
...
Рейтинг: 0 / 0
25.10.2018, 17:11
    #39722960
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
ДокGhost Writerбыстрее создать проект, чем скачивать, распаковывать
не быстрее :)а вирусы проверять Пушкин будет ))
я не буду устанавливать 2.1.x ради этого ). только релиз
...
Рейтинг: 0 / 0
25.10.2018, 17:49
    #39722988
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Ghost Writer,
Ты решил проблему? А то у меня прикольная идея появилась :)
...
Рейтинг: 0 / 0
25.10.2018, 18:02
    #39722995
Ghost Writer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Kazantsev Alexey,

решил, но ты говори раз прикольная :)
...
Рейтинг: 0 / 0
25.10.2018, 18:05
    #39722998
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Ghost Writer,

В общем, можно под эдит положить лейбл, а едиту сделать привязки к ней. Всё.
...
Рейтинг: 0 / 0
25.10.2018, 18:41
    #39723018
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Kazantsev Alexeyможно под эдит положить лейбл
дык он в рантайме лейбл создает. Представляешь, как он будет его в рантайме привязывать
Ghost Writerа вирусы проверять Пушкин будет ))
где? в pas-файле?
Ghost Writerя не буду устанавливать 2.1.x ради этого ). только релиз
у тебя на 1.8.4 этот функционал тоже есть, только без некоторых плюшек
...
Рейтинг: 0 / 0
25.10.2018, 18:51
    #39723023
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Докдык он в рантайме лейбл создает. Представляешь, как он будет его в рантайме привязывать
Так не нужно в рантайме, всё делается в дизайнере и вообще без кода.
...
Рейтинг: 0 / 0
25.10.2018, 18:53
    #39723025
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Kazantsev Alexeyвсё делается в дизайнере и вообще без кода.
[quote Ghost Writer]
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
var
  TempLabel: TLabel;
  I: Integer;
begin
  // подгоняем ширину TEdit по длине текста как это делает TLabel
  TempLabel := TLabel.Create(Self);
  TempLabel.Parent := Panel1;
...
  TempLabel.Free; 
...
Рейтинг: 0 / 0
25.10.2018, 19:01
    #39723027
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lazarus. TLabel.AutoSize в OnResize
Док,


Kazantsev AlexeyТак не нужно в рантайме
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus. TLabel.AutoSize в OnResize / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]