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

slav_z

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

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

  • Посещение

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

    33

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

  1. в OnClick элемента списка сделайте проверку: procedure TForm1.ListBoxItemClick(Sender: TObject); begin if not ListBox.AniCalculations.Moved then DoItemClick; end;
  2. Теперь после сборки ваш класс java будет добавлен в файл classes.dex (да! файл classes.dex ниоткуда не копируется, он собирается из файлов которые указаны в этом списке (см.картинку) поэтому его можно легко дополнить собственными классами java или убрать ненужные системные). Остается вопрос компиляции файла исходников java в jar-файл, но тут уж каждый сам за себя...
  3. ...потом новую платформу надо удалить и снова добавить уже через IDE обычным способом... тогда все будет корректно...
  4. хотел бы я сказать, что это можно сделать через IDE, но... откройте файл <project_name>.dproj, идите в самый конец. найдите секцию <Platforms> и добавьте туда что надо. например это может выглядеть так: <Platforms> <Platform value="Android">True</Platform> <Platform value="Android64">True</Platform> <Platform value="iOSDevice32">True</Platform> <Platform value="iOSDevice64">True</Platform> <Platform value="iOSSimulator">True</Platform> <Platform value="OSX32">True</Platform> <Platform value="OSX64">True</Platform> <Platform value="Win32">True</Platform> <Platform value="Win64">True</Platform> </Platforms>
  5. uses System.SysUtils, System.IOUtils, System.Permissions, System.Messaging, FMX.Dialogs; uses Androidapi.Helpers, Androidapi.JNI.Os, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, Androidapi.JNI.Webkit, Androidapi.JNI.Net, Androidapi.JNI.App, Androidapi.JNI.Support, FMX.Platform.Android; это потребуется
  6. вот кусок кода "вырванный" из проекта (написано благодаря ссылке ярослава выше- спасибо): MimeType = image/* - для картинок. если что не так, комментируйте. type TDialog = class private FProc: TProc<string>; procedure ResultCallback(const Sender: TObject; const M: TMessage); public constructor Create; destructor Destroy; override; procedure Show(const MimeType: string; Proc: TProc<string>); end; constructor TDialog.Create; begin TMessageManager.DefaultManager.SubscribeToMessage(TMessageResultNotification, ResultCallback); end; destructor TDialog.Destroy; begin TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, ResultCallback); end; procedure TDialog.ResultCallback(const Sender: TObject; const M: TMessage); var FilePath: string; begin if TMessageResultNotification(M).RequestCode = 5 then if TMessageResultNotification(M).ResultCode = TJActivity.JavaClass.RESULT_OK then begin FilePath:=JStringToString(TMessageResultNotification(M).Value.getData.getPath); FProc(FilePath); end; Free; end; procedure TDialog.Show(const MimeType: string; Proc: TProc<string>); var Intent: JIntent; begin FProc:=Proc; Intent:=TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_PICK); Intent.setType(StringToJString(MimeType)); MainActivity.startActivityForResult(Intent,5); end; procedure OpenFileDialog(const MimeType: string; Proc: TProc<string>); begin RequestPermissionsExternalStorage( procedure(Granted: Boolean) begin if Granted then TDialog.Create.Show(MimeType,Proc); end); end;
  7. function IsEndScroll(ScrollBox: TCustomScrollBox): Boolean; begin Result:=ScrollBox.ViewportPosition.Y>=ScrollBox.ContentBounds.Height-ScrollBox.ClientHeight; end;
  8. посмотрите реализацию TCustomListBox.Clear;
  9. ну здесь же Button29 не разрушается... тыкая по кнопке будут проблемы если убивается сам элемент по которому тыкать...
  10. procedure ClearTextAttribute(Text: TText); begin for var I:=0 to TTextAccess(Text).Layout.AttributesCount-1 do TTextAccess(Text).Layout.Attributes[I].Attribute.Font.Free; TTextAccess(Text).Layout.ClearAttributes; end; поправка... иначе созданные объекты TFont не разрушаются... так же необходимо вызвать ClearTextAttribute() при разрушении формы.
  11. уберите первые две строки... попробуйте... должно заработать.
  12. 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.
  13. Да нормально работает на XE8 и 10.3 procedure TForm6.Button1Click(Sender: TObject); var A: TJSONObject; begin A := TJSONObject(TJSONObject.ParseJSONValue('здесь неправильный json')); if Assigned(A) then A.ToString; end;
  14. Показать/скрыть сенсорную клавиатуру 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 простой запуск уже не работает. Кто как делал? Очень интересны примеры кода.
  15. попробуйте указать цвет и вид заполнения... Canvas.Fill.Color и Canvas.Fill.Kind (текст - это заливка... поэтому Fill)
  16. Ищите установленное свойство Scale у родителей. Создайте новый пустой проект и проверьте поведение координат мыши там. image-mouse.zip
  17. могу посмотреть, но не бесплатно (999 р.)... я картинки в pdf не делал... так бы сказал как и так... да посмотрите сами формат изображения в pdf-фе...
  18. pdf - текстовый формат данных... в простом виде, без сжатия, можно самому все сделать... при желании...
  19. 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...
  20. вылет с ошибкой? какой? или вылет по return ? ActivePrinter не nil (null) ?
  21. очистить дату можно только на экране: DateEdit1.IsEmpty:=True; DateEdit1.Data := nil; - Data это свойство TFmxObject к дате TDateEdit оно не имеет отношения. ShowMessage(DateToStr(DateEdit1.Date)); - всегда покажет дату: тип TDate всегда имеет какое-нибудь значение (не может быть nil). Просто проверяйте свойство DateEdit1.IsEmpty перед обработкой.
  22. попробуйте запустить exe-шник на Win 7 или 10... если там будет работать, то дело в XP... скорее всего так и будет... я чета сомневаюсь что XE6 сильно отличается от XE8....
  23. странно... у меня windows 10 нормально работает и в XE8 и в 10.2.3... когда программа запускается, главное окно приложения сразу показывается на экране.. вы успеваете его свернуть до первого срабатывания таймера? программа при запуске должна быть сразу свернута?
  24. ну блиииииин... создайте событие OnCloseQuery у всплывающего окна и вставьте туда код. у всплывающего окна сделайте "поверх всех окон" и "по центру экрана". пример во вложении. Project.zip
  25. Система оповещений Telegram... там можно использовать систему оповещения Windows или собственные окна оповещений...
×
×
  • Создать...