Перейти к содержанию
Fire Monkey от А до Я

x11

Пользователи
  • Постов

    828
  • Зарегистрирован

  • Посещение

  • Победитель дней

    13

Весь контент x11

  1. Кто виноват и что делать? Часть верхушки обрезается. Изменение разрешения не помогает. На смартфоне все норм.
  2. на кнопку Закрыть реакции нет
  3. Да, это костыль, т.к. у FMX до сих пор нет работающего Inputbox для мульти-платформенного приложения.
  4. При чем здесь так же или не так же? Я о том, что на данный момент нет такого лаконичного решения, как старый InputBox/InputQuery. Гарантированно рабочего в мульти-платформенном приложении.
  5. ок, спасибо, посмотрю ну т.е. получается, что одного простого универсального нет? нужно отдельно для каждой платформы пились, судя по тому, что Вы написали "для Windows"?
  6. надо будет поэкспериментировать https://community.embarcadero.com/blogs/entry/perform-low-code-calculations-using-livebindings-in-delphi-firemonkey-on-android-and-ios IfThen(Self.Owner.FieldEdit1.AsString='', 0, Self.Owner.FieldEdit1.AsFloat)+ IfThen(Self.Owner.FieldEdit2.AsString='', 0, Self.Owner.FieldEdit2.AsFloat)+ IfThen(Self.Owner.FieldEdit3.AsString='', 0, Self.Owner.FieldEdit3.AsFloat)
  7. Да, винда и ShowMessage() не помогает т.е. я правильно понимаю, что на данный момент у Delphi мульти-платформенного приложения нет работающего InputBox?
  8. я ставил туда caption := '111'; и не помогло
  9. Всё равно нет реакции на Отмена или Закрыть. На OK есть реакция. procedure TfmReference.actEditExecute(Sender: TObject); Var val: array of string; sTableName, cap: string; id: integer; begin SetLength(val, 1); val[0] := ListView1.Items[ListView1.Selected.Index].Objects.FindObjectT<TListItemText>('name').Text; id := StrToIntDef(ListView1.Items[ListView1.Selected.Index].Objects.FindObjectT<TListItemText>('id').Text, -1); cap := comboRefType.Items[comboRefType.ItemIndex]; sTableName := GetTableName; TDialogServiceAsync.InputQuery(cap, ['Изменить: '], Val, procedure(const AResult: TModalResult; const AValues: array of string) begin case AResult of mrOk: begin if not AValues[0].IsEmpty then begin sqlInsert.sql.Text := Format('update %s set name = ' + QuotedStr(val[0]) + 'where id = ' + IntToStr(ID), [sTableName]); sqlInsert.Execute; end; end; mrCancel: begin Exit; // тут выполняем действия по кнопке Отмена end; end; end ); // if TPlatformServices.Current.SupportsPlatformService(IFMXDialogServiceSync, IInterface(SyncService)) then // if SyncService.InputQuerySync(cap, ['Изменить: '], val) then // begin // sqlInsert.sql.Text := Format('update %s set name = ' + QuotedStr(val[0]) + 'where id = ' + IntToStr(ID), [sTableName]); // sqlInsert.Execute; // end; end; Ставлю бряку на case или на Exit; и нажимаю Отмена - ничего не происходит. Перепроверил, Debug включен.
  10. а среда не будет ругаться в этом случае, что InputQuery устарел сейчас нет возможности проверить
  11. Необязательно модальные, дело не в них, а в простом функционале InputBox. Придется самому?
  12. Процедура редактирования одной записи в базе выглядит так: uses uDM, CRAccess, DASQLGenerator, FMX.Platform, FMX.DialogService, FMX.Utils; ... ... procedure TfmReference.actEditExecute(Sender: TObject); Var val: array of string; sTableName, cap: string; SyncService : IFMXDialogServiceSync; id: integer; begin SetLength(val, 1); val[0] := ListView1.Items[ListView1.Selected.Index].Objects.FindObjectT<TListItemText>('name').Text; id := StrToIntDef(ListView1.Items[ListView1.Selected.Index].Objects.FindObjectT<TListItemText>('id').Text, -1); cap := comboRefType.Items[comboRefType.ItemIndex]; sTableName := GetTableName; if TPlatformServices.Current.SupportsPlatformService(IFMXDialogServiceSync, IInterface(SyncService)) then if SyncService.InputQuerySync(cap, ['Изменить: '], val) then begin sqlInsert.sql.Text := Format('update %s set name = ' + QuotedStr(val[0]) + 'where id = ' + IntToStr(ID), [sTableName]); sqlInsert.Execute; end; end; Т.е. на форме ListView в режиме DynamicAppearance. Щёлкаем по строке, нажимает кнопку редактировать (actEditExecute). на Windows появляется окно ввода, но нет реакции на кнопку Отмена или Закрыть. При вводе значения и нажатии на OK, запись меняется. На Android 5 вообще не появляется диалоговое окно. Но actEditExecute выполняется. Например, если не выбрать строку списка и нажать Изменить, то появляется AV. Я так понимаю, что на Android SupportsPlatformService возвращает False. Тогда как реализовать InputBox или InputQuery на всех платформах или хотя бы на Windows и Android? Свое окно создавать и самому воспроизводить функционал InputBox или InputQuery?
  13. К сожалению, в Delphi отсутствует справка Data.Bind.Components.TFormatExpressionItem.CustomFormat Т.е. раздел есть, но там пустышка - ни описания, ни примеров.
  14. а вот эта вот связь сама теряется? глюк? или специально?
  15. Посмотрел это видео сделал, как на картинке но так, как на видео с использованием "Цена " + owner.fieldbyname('имя_поля').text не получилось
  16. как-то так? ListView1.Items[0].Objects.FindObjectT<TListItemText>('text5').Text := 'Цена'; только данные приходят из базы и на момент создания, например, окна, у меня нет "ListView1.Items[0]"
  17. всё равно туплю и как мне в коде добраться то text и в какой момент? в каком-то событии?
  18. а, ну так я пытался, просто об этом не написал просто где здесь свойство Text или Caption?
  19. x11

    ListVew как лента твиттера

    В Delphi 10.1 улучшили TListVew. Теперь в один Item типа DynamicAppearance можно вставить несколько объектов TTextObjectAppearance и связать это с DataSet через LiveBinding. Небольшой пример мне удалось сделать (Multi-Device). Запустить на смартфоне (Android). Хотел пойти дальше, но появились вопросы, ответы на которые не смог найти. Задача: организовать что-то вроде ленты, где будут отображаться некие данные одного объекта/объявления: id, наименование, картинка, checkbox, цена1, цена2 и ещё что-то. Как в твиттере, или как в приложении для отображения объявлений. Данные живут в sqlite и загружаются в TUniQuery. С помощью LiveBinding получилось отобразить в TTextObjectAppearance значение из поля. А вот не нашёл, как в TTextObjectAppearance записать свой произвольный текст, например, слово "Цена", чтобы было "Цена 125000" или "Тел: 456-789". Далее. Если в таблице 10000 записей, то они все загрузятся в TListVew или будут подгружаться автоматически в зависимости от TUniQuery.FetchRows? Может уже есть из коробки такой готовый пример? а ещё здесь нет item.footer.text (см. прикреплённую картинку)
×
×
  • Создать...