-
Постов
19 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные NesDmitrijj
-
-
Я имею ввиду отображение узких скролбаров по умолчанию. Т.е. они узкие всегда и не исчезают. А про AniCalculations я вкурсе )))).
-
Здравствуйте!
Как реализовать узкие скролбары у TScrollBox по умолчанию. Помнится в XE3 было специальное свойство, но с появлением AniCalculations всё кудато пропало.
Спасибо.
-
Ссылку, которую я Вам дал, решает именно этот вопрос и именно реализацией стилей. Создается стиль. Форма делается прозрачной, размещается на нее панель и задается ей соответственно стиль. И все - нужная форма готова.
Вы правы. Буду иметь ввиду. Спасибо. Но это те же танцы с бубном, что и расстановка Image'й по краям.
-
Посмотрите тут, вдруг Вам это подходит.
К сожалению, там ответа не нашел. Мне приходится делать убирать границы формы, делать её прозрачной и накидывать Image'ы по краям формы с полупрозраными картинками. Но это приходится проделывать ля каждой формы, что утомительно. Вот я и решил, что этот вопрос можно решить на уровне стилей. Но к сожалению ничего не выходит. Похоже, что сначала ресуется черный Canvas, по верх которого рисуется стиль окна. И чем прозрачнее я делаю стиль окна, тем больше черный цвет проступает сквозь него. Способов отключения этого черного полотна так и не нашел(((
-
Здравствуйте!
Подскажите, как использовать прозрачность в стиле для firemonkey? В частности итересует как сделать границы формы полупрозрачными? В исходной картинке скина я прозрасность границ сделал. Но в работающй программе прозрасности нет. Такое ощущение, что скин рисуется поверх черного фона, и чем прозрачнее я делаю границы окна, тем темнее они в работающей программе.
-
ОК. Сообщать о найденных ошибках больше не буду. В QualityCentral писать тоже не буду - не умею.
-
Нет. Прошу Вас это сделать.)))
-
Можно конечно не использовать переменную ReportMemoryLeaksOnShutdown, чтобы избежать первой проблемы, но вторая останется (просто о ней не будет сообщаться при закрытии).
-
Здравствуйте!
Обнаружил проблему (баг) в компоненте StyleBook. Точнее проблемы две:
Баг №1:
StyleBook не уживается с переменной ReportMemoryLeaksOnShutdown. Я использую эту переменную для того, чтобы отображать сообщения об утечках памяти при закрытии программы. Так вот, если эту переменную установить в True, то при закрытии программы возникает "Access violation...". Проблема возникает в модуле FMX.Platform.Win (см. прик. файл №1)
Для воспроизведения проблемы достаточно:
1. Создать новый проект
2. Закинуть на форму компонент StyleBook. Указать в свойстве FileName путь к файлу стиля (*.style)
3. В проекте после Application.Initialize; вставить строку ReportMemoryLeaksOnShutdown := True;
4. Запустите выполнение программы и закройте её. Тут и возникнет "Access violation...".
Примечание: проблема возникает только если свойство FileName заполнено.
Баг №2:
В StуleBook обнаружена утечка памяти (см. прик. файл №2)
Для воспроизведения проблемы достаточно:
1. Создать новый проект
2. Закинуть на форму компонент StyleBook. Указать в свойстве FileName путь к файлу стиля (*.style)
3. Очистить свойство FileName
4. В проекте после Application.Initialize; вставить строку ReportMemoryLeaksOnShutdown := True;
5. Запустите выполнение программы и закройте её. Тут и возникнет сообщение об утечке памяти.
Примечание: проблема возникает если единожды указать путь к файлу стиля и сохраняется даже после очистки свойства FileName.
P.S. Эти проблемы как-то исправляются? Если нет, то сообщите, плз, разработчикам о этих багах.
-
AlexG, Ваше сообщение "Только-что попробовал именно Ваш код - он дает один и тот же результат по скорости, не зависимо от того - сколько раз нажимать..." побудило меня продолжить эксперимент. В итоге выяснилось, что разница во времени отрисовки компонентов наблюдается только если запустить программу в режиме отладки (по F9). Если запустить программу без отладки (через проводник или shift+ctrl+f9), то ситуация в коре меняется. Мало того, что первое создание компонентов быстрее чем раньше (в режиме отладки), так все последующие пересоздания еще быстрее чем в первый раз, и, соответственно разницы во времени практически нет, сколько не пересоздавай.
Так что вопрос можно считать решенным.
Ответ: подобное поведение наблюдается только в режиме отладки.
-
Эксперементальным путем было выявлено, что проблема в скорости отрисовки компонентов. Если у ScrollBox1 свойство Visible установить в False, то создание и пересоздание компонентов происходит примерно за одно и тоже время (в первый раз 47мс против 868мс, в последующие 60-63 мс против 1200-1700мс). Но это, повторюсь, если родительский компонент (ScrollBox1) не виден. может кто знает как ускорить отрисовку?
-
AlexG, это FMX-проект.
Данный пример набросан на скорую руку, чтобы желающие убедиться вооче в существовании проблемы, могли быстро вставить приведенный код у себя в проекте. Application.ProcessMessages используется для того, чтобы дождаться отрисовки компонентов, прежде чем зафиксировать время завершения и показать сообщение.
>3. Для чего Вы используете BeginUpdate и, соответственно, EndUpdate?
>Ведь в вашем случае они относятся к объекту Self, т.е. - к самой форме.
Верно, к форме, конечно можно было и ScrollBox1.BeginUpdate, но форма сама вызываем BeginUpdate у ScrollBox1.
>4. И самое главное. Простите за откровенность - как-то все очень "криво"... Все очень и очень НЕ "правильно" )
Согласен! Повторюсь, пример образный. Для бастрого достяжения требуемого эффекта.
Вы во много правы, может время не совсем точно засекается, но главное другое, что при одних и тех же условиях время, засеченное одним и тем же способом, разное. В первый раз компоненты создаются и отрисовываются гораздо быстрее, чем в последующие. Разница во времени может отличься в 10 раз. Мне кажется это как-то связано с выделением памяти. Возможно нужно отключить/включить какой-то маркер, не знаю. Проблема сохраняется, даже если уничтожить форму целеком.
-
Здравствуйте!
Имею некую структуру типа record
type TMyRecord = record Rect:TRectangle; Text:TLabel; end;
и переменную
m:array of TMyRecord;
По нажатию на одну кнопку выполняю код
procedure TForm1.Button1Click(Sender: TObject); var i:integer; t1,t2:TDateTime; L:TLabel; R:TRectangle; begin t1:=Now; SetLength(m,1000); BeginUpdate; for I := Low(m) to High(m) do begin R:=TRectangle.Create(ScrollBox1); R.Parent:=ScrollBox1; R.ClipChildren:=true; L:=TLabel.Create(R); L.Text:='Это строка №'+IntToStr(i); L.Parent:=R; m[i].Rect:=R; m[i].Text:=L; R:=nil; L:=nil; end; EndUpdate; Application.ProcessMessages; t2:=Now; ShowMessage('Начало в: '+DateTimeToStr(t1)+#13+ 'Завершение в: '+DateTimeToStr(t2)+#13+ 'Прошло:'+IntToStr(MilliSecondsBetween(t2,t1))+'мс'); end;
по нажатию на вторую кнопку - очищаю
procedure TForm1.Button2Click(Sender: TObject); var i:integer; begin for I := Low(m) to High(m) do begin m[i].Rect.Free; m[i].Rect:=nil; m[i].Text:=nil; end; SetLength(m,0); end;
Вопрос:
При первом нажатии на первую кнопку процесс может занимать 400мс, при втором нажатии (после очистки) 1200мс и так по возрастающей. Почему повторное создание всегда дольше первого?
P.S. Приведенный код создан специально для примера (по аналогии с реально используемым). В реально мною используемом коде первое создание 300мс а последующие могут достигать и 3000мс (что в 10 раз дольше). Может чтото нужно сделать дополнительно после очистки?
-
Здравствуйте!
Использую следующий код:
VertScrollBox1.AniCalculations.Animation := True; VertScrollBox1.AniCalculations.AutoShowing := True;
Прокрутка выполняется по инерции, скроллбар виден во время прокрутки и после прокрутки плавно исчезает.
Вопрос: Как сделать так, чтобы скроллбар не исчезал, если мышь над ним?
-
-
Вообще-то, о том, что нужно каждый раз сбрасывать Inverse в False, я написал во втором посте. Проблема в том, что это очевидный баг. Раньше такого небыло.
-
Такое ощущение, что это баг в FloatAnimation. Он не восстанавливает свойство Inverse в первоначальное состояние.
Если кинуть на форму вторую кнопку и в OnClick прописать FloatAnimation1.Inverse:=false; и нажимать её после завершения анимации, то повторный запуск анимации проходит без глюков. Замечу что в XE5 такого глюка небыло.
-
Здравствуйте!
Как можно реализовать простой эффект плавного исчезновения текста (TLabel) с последующим его плавным появлением без глюков?
Пример:
- Кидаю на форму Label
- Создаю FloatAnimation для свойства Opacity
- У FloatAnimation делаю StartValue = 1, StopValue = 0
- Кидаю на форму кнопку и в OnClick пишу: FloatAnimation1.Start;
Результат: При нажатии кнопки текст плавно исчезает и по завершению анимации текста не видно. - У FloatAnimation делаю AutoReverse = true;
Результат: При нажатии кнопки текст плавно исчезает, а затем плавно появляется. По завершению анимации текст виден. Но при повторном нажатии всё начинает глючить.
Вопрос: как исправить?
Как задать внутренний отступ padding для контента TScrollBox?
в TScrollBox
Опубликовано
Если речь шла об XE8, то почему-то проблема в ней осталась.