dmitry
Пользователи-
Постов
22 -
Зарегистрирован
-
Посещение
Весь контент dmitry
-
К сожалению, в этой редакции нельзя создавать ServiceApplication
-
TEdit TEdit не понятное удаление последнего символа
dmitry ответил YuraProff вопрос в Каретка/Курсор
У меня планшет Samsung Galaxy T285. Такой проблемы не обнаруживается в Берлине. Создал обычный Android проект. Положил TEdit. Задал ему некий тест. Запускаю на устройстве. Перехожу за последний символ, нажимаю BackSpace и стирается только последний символ, а не весь текст -
В продолжении, и на платформе windows возникают артефакты. HyperZen, обсуждение читал, Спасибо. Не могли бы Вы приложить Ваш код, который работает 100% на всех платформах. Я использую следующий код для подсчета высоты: function TForm1.CalculateListItemObjectHeight( const ATextObject: TListItemText): Single; Var Layout: TTextLayout; begin Layout := TTextLayoutManager.DefaultTextLayout.Create; TRY Layout.BeginUpdate; TRY Layout.Text := ATextObject.Text; Layout.MaxSize := TPointF.Create(ATextObject.Width, TTextLayout.MaxLayoutSize.Y); Layout.Font.Assign(ATextObject.Font); Layout.WordWrap := ATextObject.WordWrap; Layout.Trimming := ATextObject.Trimming; Layout.HorizontalAlign := ATextObject.TextAlign; Layout.VerticalAlign := ATextObject.TextVertAlign; FINALLY Layout.EndUpdate; END; Result := Layout.Height; FINALLY Layout.Free; END; end; procedure TForm1.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var iTaskName: TListItemText; iStatus: TListItemText; iTaskNameHeight: Single; iStatusHeight: Single; iItemHeight: Single; begin iTaskName := AItem.Objects.FindDrawable('TaskName') As TListItemText; If iTaskName <> Nil Then Begin iTaskName.Width := ListView1.Width; iTaskName.Font.Size := ListView1.ItemAppearanceObjects.ItemObjects.Text.Font.Size; End; iStatus := AItem.Objects.FindDrawable('Status') As TListItemText; If iStatus <> Nil Then Begin iStatus.Width := ListView1.Width; iStatus.Font.Size := ListView1.ItemAppearanceObjects.ItemObjects.Text.Font.Size; If iStatus.Text = 'NORMAL' Then iStatus.TextColor := TAlphaColorrec.Blue; End; iTaskNameHeight := CalculateListItemObjectHeight(iTaskName); iStatusHeight := CalculateListItemObjectHeight(iStatus); iTaskName.Height := Round(iTaskNameHeight); iStatus.Height := Round(iStatusHeight); iStatus.PlaceOffset.Y := iTaskName.Height + 2; iItemHeight := Round(iTaskNameHeight + iStatusHeight); AItem.Height := Round(iItemHeight) + 5; end;
-
Добрый день. Никак не могу справиться с одной проблемой при работе с компонентом ListView. Использую Delphi XE10.1 - Berlin. В тестовом проекте создал два вида: Windows, Android 10 Tabled. На главную форму положил компонент ListView и две кнопки для заполнения ListView и очистки. Способ отображения Items - Динамический и состоит из двух текстовых элементов (TaskName и Status). В TaskName может содержаться очень большой текст, поэтому я самостоятельно рассчитываю высоту Item, с помощью кода приведенного на данном форуме. Все замечательно работает на Windows платформе, а вот под Android при создании Item появляются артефакты, текст как бы обрезается, но стоит повернуть ориентацию планшета, так сразу артефакты пропадают. Помогите избавиться от артефактов. Свой тестовый проект прилагаю. TestProject.rar
-
Добрый день. Поделитесь информацией, кто как отлавливает утечки памяти в приложении для Android? ReportMemoryLeaksOnShutDown, при выходе из приложения не показывает утечек.
-
krapotkin, Если возможно, не могли бы Вы описать подробнее как установить SDK и NDK (ccылки), и какие пути нужно дописать в студии?
-
Zuby и Krapotkin Спасибо Вам за помощь. Zuby, сделал как Вы и описывали procedure TForm1.Button1Click(Sender: TObject); Var Item: TListViewItem; begin //Первый item Item := ListView1.Items.Add; Item.Bitmap.Assign(Image1.Bitmap); Item.Objects.TextObject.Text := 'Task 1'; Item.Objects.DetailObject.Text := '3'; //Item.Data[sdStatusSignal] := 'SIGNAL'; Item.Data['STATUS'] := 'SIGNAL'; //второй item Item := ListView1.Items.Add; Item.Bitmap.Assign(Image1.Bitmap); Item.Objects.TextObject.Text := 'Task 2'; Item.Objects.DetailObject.Text := '0'; //Item.Data[sdStatusNormal] := 'NORMAL'; Item.Data['STATUS'] := 'NORMAL'; ListView1.Resize; end; procedure TForm1.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var //StatusSignal: TListItemText; //StatusNormal: TListItemText; TextObject: TListItemText; begin TextObject := AItem.Objects.FindDrawable('STATUS') As TListItemText; If TextObject = Nil Then Begin TextObject := TListItemText.Create(AItem); TextObject.Name := 'STATUS'; End; If TextObject.Text = 'SIGNAL' Then TextObject.TextColor := TAlphaColorRec.Red Else TextObject.TextColor := TAlphaColorRec.Black; Только в последнем обработчике когда идет сравнение TextObject.Text = 'SIGNAL', свойство Text равно пустому значению всегда.
-
Тогда я просто не понимаю, для чего нужно событие UpdateObjects. Сейчас сделал эксперимент, как предложил Уважаемый Krapotkin. Стиль для Item = ImageListItemBottomDetailRightButton. Отдельно создал константы: Const sdStatusSignal = 'sdStatusSignal'; sdStatusNormal = 'sdStatusNormal'; Заполняю Items по кнопке: procedure TForm1.Button1Click(Sender: TObject); Var Item: TListViewItem; begin //Первый item Item := ListView1.Items.Add; Item.Bitmap.Assign(Image1.Bitmap); Item.Objects.TextObject.Text := 'Task 1'; Item.Objects.DetailObject.Text := '3'; Item.Data[sdStatusSignal] := 'SIGNAL'; //второй item Item := ListView1.Items.Add; Item.Bitmap.Assign(Image1.Bitmap); Item.Objects.TextObject.Text := 'Task 2'; Item.Objects.DetailObject.Text := '0'; Item.Data[sdStatusNormal] := 'NORMAL'; end; И сам обработчик UpdateObjects, в котором рисую новый объект: procedure TForm1.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var StatusSignal: TListItemText; StatusNormal: TListItemText; begin StatusSignal := AItem.Objects.FindDrawable(sdStatusSignal) As TListItemText; If StatusSignal = Nil Then Begin StatusSignal := TListItemText.Create(AItem); StatusSignal.Name := sdStatusSignal; StatusSignal.Width := 50; StatusSignal.Height := 20; StatusSignal.PlaceOffset.Point := TPointF.Create(70, 0); StatusSignal.TextColor := TAlphaColorRec.Red; End; StatusNormal := AItem.Objects.FindDrawable(sdStatusNormal) As TListItemText; If StatusNormal = Nil Then Begin StatusNormal := TListItemText.Create(AItem); StatusNormal.Name := sdStatusNormal; StatusNormal.Width := 50; StatusNormal.Height := 20; StatusNormal.PlaceOffset.Point := TPointF.Create(70, 0); StatusNormal.TextColor := TAlphaColorRec.Black; End; end; Только совсем не понимаю как этот обработчик работает. StatusSingal и StatusNormal всегда будут для Item = Nil, что приведет к созданию новых TListItemText. Очень интересный момент получается при выводе, показывает все правильно (в приложении к ответу). При создании первого Item я должен создать только sdStatusSingal, но в отладчике видно что также создается и sdStatusNormal хотя и не отображается. Может мне кто-нибудь этот момент объяснить? P.S. С ListView только пробую работать, есть пока что некое непонимае.
-
Добрый день. Использую Delphi DX 10 Update 1. Есть маленькая задача по использованию компонента ListView. Необходимо, если в Item содержится текст = 'Signal', то цвет у шрифта установить в красный, иначе в черный. Написал следующий код вставки данных в ListView: procedure TForm3.Button1Click(Sender: TObject); Var Item: TListViewItem; TextObject: TListItemText; begin Item := ListView1.Items.Add; Item.Text := '...'; TextObject := TListItemText.Create(Item); TextObject.Text := 'Signal'; TextObject.Height := 30; TextObject.PlaceOffset.Point := TPointF.Create(1, 0); TextObject.Name := 'STATUS'; TextObject.Font.Size := 20; Item := ListView1.Items.Add; Item.Text := '...'; TextObject := TListItemText.Create(Item); TextObject.Text := 'Normal'; TextObject.Height := 30; TextObject.PlaceOffset.Point := TPointF.Create(1, 0); TextObject.Name := 'STATUS'; TextObject.Font.Size := 20; end; В событии UpdateObjects компонента написал: procedure TForm3.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var TextObject: TListItemText; begin TextObject := AItem.Objects.FindDrawable('STATUS') As TListItemText; If TextObject <> Nil Then Begin If TextObject.Text = 'Signal' Then TextObject.TextColor := TAlphaColorRec.Red Else TextObject.TextColor := TAlphaColorRec.Black; End; end; В итоге Item, где есть Signal не устанавливается цвет текста в красный и более того TextObject = Nil. Помогите разобраться с проблемой. Тестовый проект прилагаю LVBag.rar
-
Да, такой вариант тоже подойдет, но в этом варианте есть один минус. Я хотел чтоб Rectangle был прозрачным, а соответствующего свойства я не нашел
-
Добрый вечер. Создаю Android приложение с использованием DX 10 Update 1. Имеем: Главную форму, с кнопкой Button1 Вторичную форму (TForm2) с кнопкой Button1 Необходимо при нажатии на кнопку Главной формы, вызвать в блокирующем режиме вторичную форму и при нажатии кнопки на вторичной форме, закрыть ее. Показ вторичной формы реализовал следующим образом: FormStyle вторичной формы = Popup procedure TForm1.Button1Click(Sender: TObject); Var PopupFrm: TForm2; begin PopupFrm := TForm2.Create(Self); PopupFrm.Height := 100; PopupFrm.Width := 100; PopupFrm.Position := TFormPosition.MainFormCenter; PopupFrm.Show; end; Закрытие вторичной формы реализовал следующим образом: procedure TForm2.Button1Click(Sender: TObject); begin Close; end; При смене фокуса из вторичной формы к главной форме, вторичная форма исчезает, а мне необходимо чтоб она не исчезала. Как быть? Может быть я что-то неправильно делаю?
-
Добрый вечер. Не ожидал я конечно такого отношения к клиентам от компании Embarcadero (IDERA). Предыстория по следующей ссылке: http://fire-monkey.ru/topic/1837-otklonenie-utechka-pamiati-v-komponente-tnotificationcenter/ Установили к среде DX10 первое обновление по подписке, надеясь что компания Embarcadero исправит этот баг в Update 1, но чуда не случилось, хотя на внутреннем трекере баг зафиксирован, по словам Ярослава Бровина. Теперь обращение к компании Embarcadero: Вы можете создать какой-нибудь дополнительный патч к среде, который исправит утечку памяти в компоненте или придется ждать выхода DX 11? В Вашей компании хоть чуть-чуть тестируют продукт перед продажей или клиенты для Вас являются постоянными бета-тестерами?
-
Добрый день. В продолжение моей темы "Утечка памяти в компоненте TNotificationCenter" http://fire-monkey.ru/topic/1825-utechka-pamiati-v-komponente-tnotificationcenter/#entry9604, хотел бы узнать, каким образом можно оформить этот баг на сайт Embarcadero для его исправления?
-
Такая же ситуация касается и проекта FMX.
-
Может кто-нибудь проверить, проявляется ли у Вас такая ситуация?
-
Код стандартный: procedure TNotificationsForm.btnShowAnotherClick(Sender: TObject); var MyNotification: TNotification; begin MyNotification := NotificationCenter1.CreateNotification; try MyNotification.Name := 'Windows10Notification2'; MyNotification.Title := 'Windows 10 Notification #2'; MyNotification.AlertBody := 'RAD Studio 10 Seattle'; NotificationCenter1.PresentNotification(MyNotification); finally MyNotification.Free; end; end;
-
Дополню, проект VCL
-
Добрый день. В версии Delphi 10 Seattle обнаружил утечку памяти в проекте NotificationsProject из стандартных примеров. Воспроизводится она легко: 1) при создании формы, вставляем ReportMemoryLeaksOnShutDown := True; 2) Жмем на кнопку Show. Уведомление появляется в Windows 10. 3) Закрываем проект и видим что есть не уничтоженные объекты TNotification; Ярослав, как эту проблему можно исправить?
-
Добрый вечер. Подскажите пути решения следующей проблемы: 1) Создал пустой проект FMX под операционную систему Windows. 2) Положил на форму компонент TLabel. 3) В свойство компонента Label.Text задал строку "Способ записи в объект синхронный/асинхронный". 4) Свойство AutoSize компонента выставил в True. 5) В режиме DesignTime компонент TLabel отображает полностью весь текст. 6) Запускаю приложение в операционной системе Windows 7x64, результат работы положительный. 7) Запускаю приложение в операционной системе Windows Server 2008, результат отрицательный, текст в компоненте TLabel сокращается до "Способ записи в объект синхронный/асинхронн..." 8) Выставял свойство AutoSize компонента TLabel в False и автоматически в DesignTime задал большую длину в компоненте для текста, но результат остался отрицательным. Использую Delphi XE7 Update 1. В чем может быть проблема?