Перейти к содержанию
  • Регистрация

slav_z

Пользователи
  • Публикаций

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

  • Посещение

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

    4

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

  1. unit Unit9; interface uses System.JSON; procedure ReadData(const Data: string); implementation procedure ReadStatus(jsObject: TJSONObject); var ActivityId: Integer; ActivityName: string; begin ActivityId:=jsObject.GetValue<Integer>('statusactivity_id'); ActivityName:=jsObject.GetValue<string>('statusactivity_name'); end; procedure ReadStatusArray(jsArray: TJSONArray); var jsValue: TJSONValue; begin for jsValue in jsArray do ReadStatus(jsValue as TJSONObject); end; procedure ReadAnyArray(jsArray: TJSONArray); begin end; procedure ReadData(const Data: string); var jsArray: TJSONArray; begin jsArray:=TJSONObject.ParseJSONValue(Data) as TJSONArray; try ReadStatusArray(jsArray.Items[0] as TJSONArray); ReadAnyArray(jsArray.Items[1] as TJSONArray); ReadAnyArray(jsArray.Items[2] as TJSONArray); ReadAnyArray(jsArray.Items[3] as TJSONArray); finally jsArray.Free; end; end; end.
  2. Да нормально работает на XE8 и 10.3 procedure TForm6.Button1Click(Sender: TObject); var A: TJSONObject; begin A := TJSONObject(TJSONObject.ParseJSONValue('здесь неправильный json')); if Assigned(A) then A.ToString; end;
  3. Показать/скрыть сенсорную клавиатуру Windows. unit Lib.Keyboard; interface uses Winapi.Windows, Winapi.ActiveX, System.Win.ComObj, FMX.Forms, FMX.Platform.Win; procedure ToggleSensorKeyboard(Form: TCommonCustomForm); implementation const CLSID_UIHostNoLaunch: TGUID = '{4CE576FA-83DC-4F88-951C-9D0782B4E376}'; type ITipInvocation = interface ['{37C994E7-432B-4834-A2F7-DCE1F13B834B}'] procedure Toggle(WND: HWND); safecall; end; procedure ToggleSensorKeyboard(Form: TCommonCustomForm); var TipInvocation: ITipInvocation; begin OleCheck(CoCreateInstance( CLSID_UIHostNoLaunch,nil,CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, ITipInvocation,TipInvocation)); TipInvocation.Toggle(FormToHWND(Form)); end; end. C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe - Сенсорная клавиатура Windows. В Windows 10 простой запуск уже не работает. Кто как делал? Очень интересны примеры кода.
  4. да нормально... я в окопе...
  5. "реагировал"? останется кто-то один: или FMX или FGX... кто?
  6. FGX - утопие. один разработчик не сможет тянуть такой проект. но идея в основе замечательная.
  7. попробуйте указать цвет и вид заполнения... Canvas.Fill.Color и Canvas.Fill.Kind (текст - это заливка... поэтому Fill)
  8. Ищите установленное свойство Scale у родителей. Создайте новый пустой проект и проверьте поведение координат мыши там. image-mouse.zip
  9. могу посмотреть, но не бесплатно (999 р.)... я картинки в pdf не делал... так бы сказал как и так... да посмотрите сами формат изображения в pdf-фе...
  10. pdf - текстовый формат данных... в простом виде, без сжатия, можно самому все сделать... при желании...
  11. procedure TForm1.SwitchSwitch(Sender: TObject); begin Selection.HideSelection := not Switch.IsChecked; Selection.HitTest := Switch.IsChecked; Rectangle.HitTest := not Switch.IsChecked; end; Sender в данном случае это TSwitch... нельзя его к чему попало приводить (к TRectangle или TSelection) если очень хочется, то можно к TControl... но всеравно вы обратитесь к объекту Switch но никак не к Rectangle или Selection...
  12. вылет с ошибкой? какой? или вылет по return ? ActivePrinter не nil (null) ?
  13. очистить дату можно только на экране: DateEdit1.IsEmpty:=True; DateEdit1.Data := nil; - Data это свойство TFmxObject к дате TDateEdit оно не имеет отношения. ShowMessage(DateToStr(DateEdit1.Date)); - всегда покажет дату: тип TDate всегда имеет какое-нибудь значение (не может быть nil). Просто проверяйте свойство DateEdit1.IsEmpty перед обработкой.
  14. попробуйте запустить exe-шник на Win 7 или 10... если там будет работать, то дело в XP... скорее всего так и будет... я чета сомневаюсь что XE6 сильно отличается от XE8....
  15. странно... у меня windows 10 нормально работает и в XE8 и в 10.2.3... когда программа запускается, главное окно приложения сразу показывается на экране.. вы успеваете его свернуть до первого срабатывания таймера? программа при запуске должна быть сразу свернута?
  16. ну блиииииин... создайте событие OnCloseQuery у всплывающего окна и вставьте туда код. у всплывающего окна сделайте "поверх всех окон" и "по центру экрана". пример во вложении. Project.zip
  17. Система оповещений Telegram... там можно использовать систему оповещения Windows или собственные окна оповещений...
  18. ээээ... прррр... всем успокоиться... сейчас не 90-е... так уже не делают... вопрос был "показывается основное окно при закрытии всплывающего"... тут все дело в том что при закрытии любого окна ищется другое подходящее окно и активируется... смотрите исходники FMX (unit FMX.Forms; procedure TCommonCustomForm.Close;)
  19. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=False; Release; end; Попробуйте закрывать всплывающее окно так.
  20. в FMX очень удобно делать модальные диалоги поверх всей формы. прозрачный layout сверху (по клику закрывается модальная форма - просто разрушается layout со всем содержимым - 1 случай) конкретное содержимое кладется на него там, конечно, можно расположить кнопку закрытия диалога и все остальное... по нажатию на эту кнопку также разрушается layout - 2 случай. кнопка разрушается через разрушение своего Owner-а. Но это тоже самое что и разрушить кнопку по нажатию на саму себя.
  21. Owner - отвечает за разрушение "своих" объектов при собственном разрушении. Parent отвечает за прорисовку "своих" объектов. Какая еще иерархия объектов? визуальная иерархия - да... было бы неплохо что бы эта иерархия отвечала и за выравнивание объектов - но нет... не знаю когда в delphi будет нормальное выравнивание... может еще лет 20 подождать...
  22. но не в FMX !!! в FMX Parent (панель) при своем разрушении разрушит и кнопку. Вот это неправильно.
  23. Я бы сформулировал вопрос по-другому. Чем отличается Owner и Parent? Для чего нужен тот и другой. Почему это разные объекты? Ярослав, дайте пожалуйста четкое пояснение как разработчик FMX. Я думаю многим здесь это будет интересно.
  24. разработчики FMX по каким-то неведомым причинам сделали так, что визуальный контейнер при своем уничтожении так же разрушает и те компоненты, которые отображает (достаточно было просто обнулить Parent). такого никогда не было в VCL. это плохо и неправильно. это работа Owner а не Parent. Поробуйте создать элемент Create(Owner) и указать какой-нибудь посторонний Parent не принадлежащий Owner. При разрушении получите AV (сначала элемент будет разрушен Parent-ом а затем то же самое попытается сделать и Owner... нет там никаких нотификаций и подписок). я постараюсь далее не вступить в спор... но ничего не обещаю...
  25. замени TFrame13.Create(nil) на TFrame13.Create(Self) только ради бога не спрашивай зачем... проверка на дублирование имени выполняется родителем... а он у тебя nil.
×
×
  • Создать...