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

walexw

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

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

  • Посещение

Активность репутации

  1. Like
    walexw отреагировална Brovin Yaroslav в определить версию Android   
    Универсальный способ.
    TOSVersion
  2. Like
    walexw отреагировална Andrey Efimov в Помогите разобраться с потоком   
    Вот посмотрите справку System.Classes.TThread.Synchronize
    Примеры на С++: ThreadSynchronize (C++) и TThreadYield (C++)
  3. Like
    walexw отреагировална Равиль Зарипов (ZuBy) в Помогите разобраться с потоком   
    void __fastcall domThread::UpdateAnimation() { frm->aIndic->Visible  = false; frm->aIndic->Enabled  = false; } незнаю как на си будет, но примерно так
    void __fastcall domThread::Execute() { Synchronize( UpdateAnimation ); Terminate(); }
  4. Like
    walexw отреагировална Камышев Александр в Многоязыковое приложение   
    чем плох стандартный TLang? свойство
    AutoSelect=True - автоматическое определение языка и StoreInForm=True - хранить в ресурсах
    использую TLang для статичных строк и вот такой код для статусов и сообщений:
    String LangString( unsigned int code, AnsiString lang ) { if ( lang == "RU" ) switch( code ) { case 0: return (AnsiString)"Ожидание"; case 60: return (AnsiString)" не выполнено"; case 61: return (AnsiString)" выполнено успешно"; } else if ( lang == "EN" ) switch( code ) { case 0: return "Waiting"; case 60: return " not completed"; case 61: return " completed successfully"; } return "";  
  5. Like
    walexw отреагировална Andrey Efimov в Многоязыковое приложение   
    Можно использовать возможности Android API, а можно сделать всё самостоятельно, через какой-нибудь ini файл например
    Пример использования АПИ: Автоматическая смена названия приложения в зависимости от языка системы
    Пример нужно немного расширить: добавляем переводы меню и всего, что хотим в strings.xml, после этого, при запуске приложения получаем ресурсы из автоматически выбранного strings-**.xml.
    Вот так выглядит функция получения ресурса:
    class function TLoadR.LoadRString(const value: String): String; var resourceId: integer; begin resourceId := TAndroidHelper.Activity.getResources.getIdentifier (StringToJString(value), StringToJString('string'), TAndroidHelper.Activity.getPackageName); Result := JStringToString(TAndroidHelper.Activity.getResources.getString(resourceId)); end;  
    Внимание! Не пытайтесь использовать функцию TAndroidHelper.GetResourceID, в ней я обнаружил багу. В след. релизе поправят. Предложенный выше код, полностью рабочий.
     
  6. Like
    walexw отреагировална Равиль Зарипов (ZuBy) в Многоязыковое приложение   
    1) можно использовать DeviceInfo
    2) все зависимости есть в модуле выше
    if TPlatformServices.Current.SupportsPlatformService(IFMXLocaleService, IInterface(LocaleService)) then DeviceInfo.diLang := LocaleService.GetCurrentLangID;  
  7. Like
    walexw отреагировална Равиль Зарипов (ZuBy) в Помогите разобраться с потоком   
    нужно делать вот так:
    1) использовать компоненты Ярослава
    2) анимацию запускаем до потока (в котором выполняются разного рода запросы), по завершению операции в !синхронизации! выключаем анимацию
  8. Like
    walexw отреагировална Brovin Yaroslav в Помогите разобраться с потоком   
    Все просто.
    Отрисовка индикатора идёт в главном потоке. Вызывая Sleep в главном потоке, вы лочите главный поток на 5 секунд и как следствие всю отрисовку (Даже если вы выставите раньше Enabled=True).  С UI компонентами можно работать только в главном потоке, поэтому все вызовы, работающие с компонентами из других потоков нужно завернуть в TThread.Synchronize.
  9. Like
    walexw отреагировална Alexander в Нужен совет "бывалого" разработчика   
    Слева и справа вверху повесить "плавающие" полупрозрачные кнопки "Ок" и "Отмена"
  10. Like
    walexw отреагировална Евгений Корепов в отправить файл на google disk   
    Один из вариантов вызывать активити вот так:
    procedure ShareFile(aFileName, aComment : String); var Intent : JIntent; uri : Jnet_Uri; AttachmentFile: JFile; S : String; begin Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_SEND); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); S:=TPath.GetFileName(aFileName); Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(aComment)); Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(aComment)); AttachmentFile := TJFile.JavaClass.init(StringToJString(aFileName)); Uri := TJnet_Uri.JavaClass.fromFile(AttachmentFile); Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((Uri as ILocalObject).GetObjectID)); Intent.setType(StringToJString('text/plain')); // Intent.setDataAndType(StrToJURI('file:' + TPath.Combine(TPath.GetSharedDownloadsPath, 'picture.png')), StringToJString ('image/png')); SharedActivity.startActivity(Intent); end; Пользователю нужно будет выбрать что именно использовать, список будет из всего что установлено (гугледиск, дропбокс и т.д.). Можно вызывать активити для определенного приложения, но под рукой примера нет.
  11. Like
    walexw отреагировална krapotkin в помогите выбрать лицензию   
    pro + mobile add-on
  12. Like
    walexw отреагировална Andrey Efimov в KeyStore   
    Вот здесь, специально писал статью [Google Play] Публикация приложения в Google Play
    Ещё на форуме есть раздел Статьи и заметки, там статьи тоже упоминаются.
     
  13. Like
    walexw отреагировална krapotkin в listView   
    аналогично, только boolean  
    myObj.visible:=aitem.data['hide_text1'].asBoolean
  14. Like
    walexw отреагировална Равиль Зарипов (ZuBy) в listView   
    Там слишком много кода, чтобы выкладывать. Появится больше вопросов чем ответов. 
    Если я хочу скрыть один из элементов, создаю в Data доп. числовой параметр. Затем в событии изменяю видимость в зависимости от его значения. Параметр управляется вне события. 
    Сейчас Делфи нет под рукой, но приблизительно так
    Aitem.Objects.TextObject.Visible := aitem.data['hide_text'].asinteger <> 1;
  15. Like
    walexw отреагировална AngryOwl в кнопка поверх ListView   
    И [brunnengi] и [ZuBy] оба правы.
    В первом случае у TLayout нужно выключить свойсвто HitTest, чтобы сам TLayout не "перекрывал" клики мышь (или тапы) (TLayout  позволит "выравнивать" несколько "кнопок" относительно друг друга проще)
    Во втором случае - все проще (любой лишний компонент на форме, не важно - в составе чего он, - это дополнительная память, а главное - расходы на отрисовку. Порой нам кажется, что вроде на форме и "нет ничего", а если копнуть поглубже - там окажется море того, чего мы не видим, а отрисовывать то их прийдется!). Простой TImage, на мой взгляд, лучше.
    Но, как мне кажется, в данном случае вовсе не обязательно обрабатывать выравнивание в событии OnResize.
    Достаточно в DesignTime разместить TImage (все) где нужно и установить его (их) свойство Anchors = [akRight, akBottom] (для Вашего случая)
  16. Like
    walexw отреагировална Равиль Зарипов (ZuBy) в StringGrid + StringColumn + выравнивание   
    отрисовать самому?
    procedure TFormMain.sGridDrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: integer; const Value: TValue; const State: TGridDrawStates); begin aBounds := Bounds; aBounds.Left := aBounds.Left + 2; Canvas.BeginScene; Canvas.Fill.Color := TAlphaColorRec.Red; Canvas.FillRect(Bounds, 0, 0, AllCorners, 1); Canvas.Fill.Color := TAlphaColorRec.White; Canvas.FillText(aBounds, (Sender as TStringGrid).Cells[1, Row], false, 1, [], TTextAlign.Center, TTextAlign.Center); Canvas.EndScene; end;  
  17. Like
    walexw получил реакцию от Равиль Зарипов (ZuBy) в кнопка поверх ListView   
    Вариант ZuBy подошел.
    Если положить кнопки на панель, то панель закрывает последние строки и по ним не сделать клик.
    Убирающуюся панель не стал делать, мне надо чтобы кнопка всегда была видна, не убиралась.
    Круглый имидж запихнул в угол списка, он нормально работает и не мешает выбрать нижнюю строчку.
    ZuBy спасибо!
  18. Like
    walexw отреагировална Равиль Зарипов (ZuBy) в кнопка поверх ListView   
    кидаешь TImage без Align'инов и на ресайзе выставляешь позицию кнопке
  19. Like
    walexw отреагировална #WAMACO в Разместить в Play Market   
    http://developer.alexanderklimov.ru/android/publish.php
     
    https://support.google.com/googleplay/android-developer/answer/113469?hl=ru
  20. Like
    walexw отреагировална AndroidHalfNoob в Разместить в Play Market   
    Так в Гугле все легко ищется
    как зарегиться
    http://www.homebusiness.ru/inet/327.htm
    как опубликовать приложние
    http://www.homebusiness.ru/inet/328.htm
    кстати... для публикации приложения надо 25$ отстегнуть
  21. Like
    walexw отреагировална AndroidHalfNoob в Intent + HTML   
    Этот код на Delphi работает. Если сможешь,переложи на C++
    если же не заработает, то можно воспользоваться стандартным ActionList. Там создать ShowShareSheetAction и на кнопку написать текст
    Данная строка вызовет список установленных браузеров и предложит открыть ссылку через один из них.
    Опробовал оба способа. В своем проекте использую второй способ.
  22. Like
    walexw отреагировална krapotkin в google клавиатура   
    У edit есть свойство ReturnKeyType
    нужно установить его в Next
    но некоторые клавиатуры косячат и могут игнорить эту установку
    гугл вроде норм. работает
  23. Like
    walexw отреагировална ophion в FireMonkey + PDF   
    Если своими силами, то вот необходимая информация http://www.adobe.com/devnet/pdf/pdf_reference.html
  24. Like
    walexw отреагировална Andrey Efimov в Intent + HTML   
    К сожалению, в С++ плохо разбираюсь, но попробуйте вот так:
    String pageName = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), L"MyPage.html"); if (FileExists(fileName)) { _di_JIntent Intent; Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW); Intent->setDataAndType(StrToJURI(L"file:" + pageName)), StringToJString(L"text/html")); SharedActivity()->startActivity(Intent); } т.е. если вы хотите открыть файл, который находится на устройстве, вам необходимо добавить приставку 'file:' перед строкой содержащей путь до файла.
    на Делфях выглядит так:
    Intent.setDataAndType(StrToJURI('file:' + 'Путь'), 'Здесь указываем Mime-type в JString');
  25. Like
    walexw отреагировална zairkz в OnButtonClick vs OnItemClick   
    procedure TForm1.ListView1ItemClickEx(const Sender: TObject; ItemIndex: integer; const [Ref] LocalClickPos: TPointF; const ItemObject: TListItemDrawable);
    begin
      if ItemObject is TListItemTextButton then
      begin
       //Bla Bla Bla вообщем сюда перенесите OnButtonClick .
      end;
    //Next Bla Bla Bla
    end;
×
×
  • Создать...