haword
-
Постов
533 -
Зарегистрирован
-
Посещение
-
Победитель дней
19
Активность репутации
-
haword получил реакцию от Rusland в Рендеринг "невидимых" плоскостей или как обуздать отсечение
главное найти от куда плясать и все. а что ты хотел то? fmx это такой зверь которые надо пилить и пилить, не зря наши делали. это как и наши машины, купил а потом напильником подгоняй что бы работало
-
haword получил реакцию от zairkz в [TfgRichEdit]- компонент редактирования текста с поддержкой форматирования
ну так хоть альфу показал бы
-
haword получил реакцию от zairkz в Отображение в виде плиток
проблема не в том что битмапы не очищаются при очистке ListView, проблема при добавлении картинок в уже готовый список. Может конечно и дело в коде но код такой, при добавлении картинки если она не была загружена считываю картинку с БД, уменьшаю до маленького размера, делаю ListViewItem.Bitmap:=TBitmap.Create далее в него загружаю эту картинку и так далее. и при пролистывании около 100 картинок лезли глюки, даже если я не изменял количество итемов в ListView. Просто скролил вниз список. Было ощущение что где то лез out of memory и это вызывало глюки отображения. Пришлось ваять поток отдельный который будет бегать по списку добавленных ListViewItem и проверять видим ли он на экране, если нет то его Bitmap очищаю и из списка удаляю ListViewItem.
Читал как это делается в андроиде, там классно сделали. При событии скрола есть параметры первый видимый итем, количество видимых, и общее количество итемов, а при изменении статуса скрола параметр указывающий на то что это, идет скролинг, начался или закончился. и от сюда куда удобнее получать видимость итемов и пихать в него картинки и удалять без бубнов .
-
haword получил реакцию от Равиль Зарипов (ZuBy) в Отображение в виде плиток
а вот обычный ListView в моей проге, с программой записи подлагивает без нее все летает плавно. ибо картинки кешируются на диск и как item пропадает из видимости картинка зачищается. как item становится видимым подргужается с диска.
-
haword получил реакцию от Равиль Зарипов (ZuBy) в Отображение в виде плиток
ну хотя бы вот письками мериться не буду, телефон не топовый, средний, проц Snapdragon 410
-
haword получил реакцию от Brovin Yaroslav в Отображение в виде плиток
а вот обычный ListView в моей проге, с программой записи подлагивает без нее все летает плавно. ибо картинки кешируются на диск и как item пропадает из видимости картинка зачищается. как item становится видимым подргужается с диска.
-
haword получил реакцию от zairkz в Отображение в виде плиток
использовать плавающие панели с html текстом вместо прорисовки колонок это извращение. при этом хз как это все себя поведет при 500 панелей. ну и стоимость сего добра то же не малая.
-
haword получил реакцию от zairkz в 3D приложение
чем FMX будет в случае работы с API OpenGL отличаться от делфи? да ни чем. Я думаю можно сделать таку штуку и на FMX.
надеюсь не последует следующий стандартный вопрос в таких случаях - а есть исходный код похожей готовой программы
-
haword получил реакцию от Евгений Корепов в Снова про картинку на кнопке
лучше не пользуйся TImageList. у меня на моем телефоне нормально отображалась картинка на кнопке, на планшете нормально, а вот на Sony Xperia L, вместо картинки были различные черточки даже отдаленно не напоминающие картинку. кинул на кнопку обычный TImage и все заработало.
-
haword получил реакцию от Евгений Корепов в Возвращаясь к вопросу о подсчете высоты текста TListView
function GetTextHeight(text: string; width: single; wordwrap: boolean; font: tfont; HAlign, VAlign: TTextAlign; Trimming: TTextTrimming): single; begin if FTextLyout = nil then FTextLyout := TTextLayoutManager.DefaultTextLayout.Create; FTextLyout.BeginUpdate; try // Инициализируем текстовый слой для корректного вычисления // размеров отображаемого текста FTextLyout.Text := text; FTextLyout.MaxSize := TPointF.Create(Width, 10000); FTextLyout.WordWrap := WordWrap; FTextLyout.Font := Font; FTextLyout.Trimming:= Trimming; FTextLyout.HorizontalAlign := HAlign; FTextLyout.VerticalAlign := VAlign; finally FTextLyout.EndUpdate; end; Result:=FTextLyout.Height; end; procedure TMainForm.GroupLVUpdateObjects(const Sender: TObject; const AItem: TListViewItem); var lvi: TListViewItem; t: Single; begin lvi:= TListView(Sender).Items[AItem.Index]; t:= GetTextHeight(lvi.Text, lvi.Objects.TextObject.Width, lvi.Objects.TextObject.WordWrap, lvi.Objects.TextObject.Font, TTExtAlign(lvi.Objects.TextObject.Align), TTExtAlign(lvi.Objects.TextObject.VertAlign) ); lvi.Height:= Round(t) + 30; end; у меня работает.
-
haword получил реакцию от HyperZen в Возвращаясь к вопросу о подсчете высоты текста TListView
function GetTextHeight(text: string; width: single; wordwrap: boolean; font: tfont; HAlign, VAlign: TTextAlign; Trimming: TTextTrimming): single; begin if FTextLyout = nil then FTextLyout := TTextLayoutManager.DefaultTextLayout.Create; FTextLyout.BeginUpdate; try // Инициализируем текстовый слой для корректного вычисления // размеров отображаемого текста FTextLyout.Text := text; FTextLyout.MaxSize := TPointF.Create(Width, 10000); FTextLyout.WordWrap := WordWrap; FTextLyout.Font := Font; FTextLyout.Trimming:= Trimming; FTextLyout.HorizontalAlign := HAlign; FTextLyout.VerticalAlign := VAlign; finally FTextLyout.EndUpdate; end; Result:=FTextLyout.Height; end; procedure TMainForm.GroupLVUpdateObjects(const Sender: TObject; const AItem: TListViewItem); var lvi: TListViewItem; t: Single; begin lvi:= TListView(Sender).Items[AItem.Index]; t:= GetTextHeight(lvi.Text, lvi.Objects.TextObject.Width, lvi.Objects.TextObject.WordWrap, lvi.Objects.TextObject.Font, TTExtAlign(lvi.Objects.TextObject.Align), TTExtAlign(lvi.Objects.TextObject.VertAlign) ); lvi.Height:= Round(t) + 30; end; у меня работает.
-
haword получил реакцию от #WAMACO в Berlin жутко тормозит
а че вы хотели то? выпустили удачную версию, следующая удачной не может быть. так что или сервиспак или новая версия улучшит ситуацию так что до осени осталось подождать
-
haword получил реакцию от Евгений Корепов в Berlin жутко тормозит
а че вы хотели то? выпустили удачную версию, следующая удачной не может быть. так что или сервиспак или новая версия улучшит ситуацию так что до осени осталось подождать
-
haword получил реакцию от Rusland в Чат со смайлами
свой компонент пишешь. выводишь последовательно на канве текст и картинки. рассчитываешь высоту текста и картинки и следующую строку рисуешь уже с учетом высоты картинки. и так далее.
http://www.torry.net/vcl/edits/memos/chatedit.zip то что я говорил но реализация на с++
-
haword получил реакцию от zairkz в RAD 11 на подходе?
размечтались там же в статье написано с низу что только одни типы процессоров закапывают а 8х00 серию продолжают развивать. так что поделки на огнеобезьяне не всегда будут запускаться на интелах
-
haword получил реакцию от CodeToad в поясните еще про шифрование БД SQLlite
ничего не надо. добавить юнит в проект и все.
-
-
haword получил реакцию от Rusland в ListViewItem Transpatent, как?
я сделал с помощью хелпера, ну вернее с инета спер и под 10 версию приспособил.
добавляем хелпер
TListViewHelper = class helper for TListViewBase procedure SetItemStyleFillAltColour(Colour : TAlphaColor); procedure SetBackgroundItemStyleColor(Colour : TAlphaColor); procedure SetBackgroundStyleColor(Colour : TAlphaColor); procedure SetSelectionStyleColor(Colour : TAlphaColor); end; процедуры procedure TListViewHelper.SetBackgroundItemStyleColor(Colour: TAlphaColor); begin TListViewBase(self).FItemStyleFillColor := Colour; end; procedure TListViewHelper.SetBackgroundStyleColor(Colour: TAlphaColor); begin TListViewBase(self).FBackgroundStyleColor := Colour; end; procedure TListViewHelper.SetItemStyleFillAltColour(Colour: TAlphaColor); begin TListViewBase(self).FItemStyleFillAltColor := Colour; end; procedure TListViewHelper.SetSelectionStyleColor(Colour: TAlphaColor); begin TListViewBase(self).FSelectionStyleColor := Colour; end; вызов если в OnCreate формы ВашЛистВью.ApplyStyleLookup; // загружаем стиль ВашЛистВью.SetBackgroundItemStyleColor($20ffffff); // устанавливаем цвет, первые два байта альфаканал остальные цвет. можно так TAlphaColors.red -
haword получил реакцию от Владимир в Потоки и процедуры
procedure potoc1
begin
// выполняем действия связанные с визуальными компонентами
end
procedure potoc
begin
// выполняем загрузку файла из интернета;
TThread.Synchronize(nil, potoc1);
end;
TTask.Run(potoc);
так лучше?
-
haword получил реакцию от Kitty в [SSL] сертификаты
в юните FMX.WebBrowser.Android.pas
procedure TAndroidWebBrowserService.TWebBrowserListener.onReceivedSslError( P1: JWebView; P2: JSslErrorHandler; P3: JSslError); begin FWBService.FailLoadingWithError; end; если заменить FWBService.FailLoadingWithError; на что то типа P2.proceed; то должно сработать. Только вот сие надо правильно вызвать JSslErrorHandler.proceed -
haword отреагировална Rusland в Проблема при активации memo или edit программа зависает и закрывается.
Ответ со Stackoverflow действительно помог!
Из папки source/fmx берем FMX.Platform.Android.pas кладем в папку с проектом.
Меняем в нем следующие процедуры:
procedure TPlatformAndroid.RunOnUIThread(Proc: TThreadProcedure); begin //MainActivity.runOnUiThread(TSimpleProcedureRunner.Create(Proc)); CallInUIThread( procedure() begin Proc; end); end; procedure TPlatformAndroid.SynchronizeOnUIThread(Proc: TThreadProcedure); //var // Runner: TSimpleProcedureRunner; begin // CallInUIThread( // procedure() // begin // Runner := TSimpleProcedureRunner.Create(Proc); // MainActivity.runOnUiThread(Runner); // Runner.Event.WaitFor; // end); CallInUIThreadAndWaitFinishing( procedure() begin Proc; end); end; procedure TPlatformAndroid.SetClipboard(Value: TValue); //var // Setter: TClipboardSetter; //begin // Setter := TClipboardSetter.Create(Value.ToString); // TAndroidHelper.Activity.runOnUiThread(Setter); // Setter.Done.WaitFor(INFINITE); var Setter: TClipboardSetter; begin Setter := TClipboardSetter.Create(Value.ToString); CallInUIThread( procedure() begin SharedActivity.runOnUiThread(Setter); end); Setter.Done.WaitFor(INFINITE); end; function TPlatformAndroid.GetClipboard: TValue; //var // Getter: TClipboardGetter; //begin // Getter := TClipboardGetter.Create; // TAndroidHelper.Activity.runOnUiThread(Getter); // Getter.Done.WaitFor(INFINITE); // Result := Getter.Value; var Getter: TClipboardGetter; begin Getter := TClipboardGetter.Create; CallInUIThread( procedure() begin SharedActivity.runOnUiThread(Getter); end); Getter.Done.WaitFor(INFINITE); Result := Getter.Value; end; Запускаем и при нажатии на Edit или Memo клавиатура нормально появляется.
PS. Надеюсь Embarcadero исправит эту проблему в новой версии.
Да, помогло Видимо словить такой глюк могут аппараты Lenovo - что-то в их виртуальной клавиатуре не как у всех
PS. Вопрос Бровину Ярославу:
Будет ли исправлен Androidapi.Helpers.pas? Постоянно с ним какие-нибудь проблемы. В сервисах его даже подключать опасно, обязательно вылезают ошибки касающиеся TAndroidHelper.Activity
С уважением, ... дата... подпись
-
haword получил реакцию от Rusland в Проблема при активации memo или edit программа зависает и закрывается.
помогло? если да то надо будет у себя то же править что бы не словить такой глюк
-
haword получил реакцию от zairkz в Как увеличить скорость отработки запроса SQL к базе SQLLite
табы лучше не использовать, вместо них использовать разные формы. табы жрут все время отрисовки ибо каждый элемент отрисовывается не зависимо от того активна влкдака или нет.
-
haword получил реакцию от masmat в Как увеличить скорость отработки запроса SQL к базе SQLLite
табы лучше не использовать, вместо них использовать разные формы. табы жрут все время отрисовки ибо каждый элемент отрисовывается не зависимо от того активна влкдака или нет.
-
haword получил реакцию от masmat в Как увеличить скорость отработки запроса SQL к базе SQLLite
ну и еще где то Ярослав говорил что при создании можно прогрузить с начало все стили а потом уже форма быстрее будет грузится.