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

enatechno

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

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

  • Посещение

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

    26

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

  1. Like
    enatechno отреагировална #WAMACO в [Android] Горизонтальная ориентация экрана   
    ширину экрана проверяйте и оттуда исходите
    разрешения поставьте все!
  2. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в Вопрос по компонентам   
    Вот так делал для себя
    PresentedButtonsRecalPosition.7z
  3. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в Отображение в виде плиток   
    Предыстория была такая:
    Изначально такие плитки были сделаны на Button'ах (стиль) и TPresentedScrollBox. Но как только пошло дело в тест основательный идею тут же выбросил. 120+ элементов выключили телефон (samsung ace2 duos) при отрисовке, точней при динамической загрузке картинок. да и в целом вся эта беда работает медленней чем реализация на TListView
    Я не художник, но смысл вроде передал
    Пример: У нас есть 12 элементов,и 4 колонки
    Можно в LV отрисовывать дополнительные "контролы" и поместить в один реальный айтем, 4 виртуальные панельки (в нашем случае)
    Для того чтобы такое получилось:
    1) ListView должна при ресайзе рассчитать сколько колонок она может иметь (ширина LV / на ширину одной панельки)
    2) дальше Вам нужно будет разбить отрисовку Itema на 4 панельки
        2.1) тоже самое проделать и при выделении
    3) При таком подходе не будет стандартных элементов отображения (Text, Detail, Image и прочее нужно выключить)
    Добавление Itema будет проходить в два цикла: первый добавляет реальный Item (0-2), а второй заполняет данными наши поля в панельках (title1, price1, bitmap1, title2, price2, bitmap2 и тд...)
    4) Ну и самое важное в OnUpdateObjects все это отрисовать
    Надеюсь вам это поможет!
  4. Like
    enatechno отреагировална master webs в IOS Push GCM/firebase   
    добавил ссылку на github в первый пост, в нем есть исходники для delphi 10.1 berlin (10 должно все работать)
  5. Like
    enatechno отреагировална Andrey Efimov в [Статья] Публикация приложения в Google Play   
    Ссылка: http://delphifmandroid.blogspot.ru/2016/06/google-play-google-play.html
    Автор: Андрей Ефимов
    Описание: Публикация приложения в Google Play
  6. Like
    enatechno отреагировална Andrey Efimov в Какие статьи вы хотели бы видеть в блогах?   
    Написал статейку по вашей теме [Google Play] Публикация приложения в Google Play
  7. Like
    enatechno получил реакцию от Kitty в Слишком большой размер приложения.   
    Возможно. Дополнительный файл .so отличается от Вашего тем, что пробел заменен на _. Хотел проверить, но Delphi не дает мне создать проект с пробелом в имени.
  8. Like
    enatechno получил реакцию от AngryOwl в Слишком большой размер приложения.   
    Возможно. Дополнительный файл .so отличается от Вашего тем, что пробел заменен на _. Хотел проверить, но Delphi не дает мне создать проект с пробелом в имени.
  9. Like
    enatechno получил реакцию от Rusland в Слишком большой размер приложения.   
    Возможно. Дополнительный файл .so отличается от Вашего тем, что пробел заменен на _. Хотел проверить, но Delphi не дает мне создать проект с пробелом в имени.
  10. Like
    enatechno получил реакцию от Axbor в Слишком большой размер приложения.   
    Возможно. Дополнительный файл .so отличается от Вашего тем, что пробел заменен на _. Хотел проверить, но Delphi не дает мне создать проект с пробелом в имени.
  11. Like
    enatechno отреагировална Евгений Корепов в Прочитать DNS запрос в idUDPServer   
    Все правильно получаете, кодировка тут не при чем. Согласно спецификации "DNS Packet Structure", вы получаете не строку, а пакет который нужно разобрать. К примеру если запрос будет "nslookup www.google.ru 127.0.0.1", то там где вы получаете имя хоста будет строка "''#3'www'#6'google'#2'ru'#0#0#1#0#1".
    Парсинг простейший:
    #3 - означает что далее идут 3 символа хоста 'www' - вот ожидаемые 3 символа #6 - далее идут еще 6 символов хоста 'google' - ага, вот они #2 - ну и еще 2 символа 'ru' - ура, они здесь #0 - конец имени хоста, складываем в кучу, перемежая точками и получаем www.google.ru #0 - дальше у нас служебная информация... #1 #0 #1 Вот как то так.
    P.S. А зачем вам на таком низком уровне работать? Может использовать IdDNSServer : TIdDNSServer ?
    P.P.S. Правильно Memo1.Lines.Add(BytesToString(AData,12)); //(12, а не 13)
  12. Like
    enatechno получил реакцию от zairkz в Слишком большой размер приложения.   
    Вы используете пробел в названии проекта?
  13. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в Меню Android   
    1) Отдельная форма с прозрачностью + ListBox/ListView
    2) TRectangle + ListBox/ListView
    3) MultiView + ListBox/ListView
    и тд...
    ловить кнопочку VK_MENU в событии OnKeyDown
  14. Like
    enatechno получил реакцию от Rusland в Потоки и процедуры   
    Здесь Вы обращаетесь к визуальному компоненту в потоке, а не из Synchronize. Возможно в этом проблема?
     
  15. Like
    enatechno получил реакцию от Rusland в xe 8 нестандартный grid   
    Если в гриде планируется выводить только текстовую информацию то используйте TStringGrid. Для отображения текста в ячейке в несколько строк используйте в тексте символ абзаца. Пример:
    StrinGrid1.Cells[1, 1] := 'строка 1 в ячейке 1.1' + #13#10 + 'строка 2 в ячейке 1.1'; Если же надо чтоб текст в одной ячейке был отображен разным шрифтом/цветом используйте событие TGrid.OnDrawColumnCell. Ниже описано как работать с TextLayout в этом событии: 
    Добавлю, что в одной ячейке можно рисовать несколько TextLayout указывая для каждого цвет и размер шрифта, например как TStringGrid на скриншоте:

    P.S. Если планируете писать мобильное приложение, используйте TListView вместо грида.
  16. Like
    enatechno получил реакцию от lev.vorobyov в xe 8 нестандартный grid   
    Если в гриде планируется выводить только текстовую информацию то используйте TStringGrid. Для отображения текста в ячейке в несколько строк используйте в тексте символ абзаца. Пример:
    StrinGrid1.Cells[1, 1] := 'строка 1 в ячейке 1.1' + #13#10 + 'строка 2 в ячейке 1.1'; Если же надо чтоб текст в одной ячейке был отображен разным шрифтом/цветом используйте событие TGrid.OnDrawColumnCell. Ниже описано как работать с TextLayout в этом событии: 
    Добавлю, что в одной ячейке можно рисовать несколько TextLayout указывая для каждого цвет и размер шрифта, например как TStringGrid на скриншоте:

    P.S. Если планируете писать мобильное приложение, используйте TListView вместо грида.
  17. Like
    enatechno отреагировална Евгений Корепов в Генерация QR-кода на Android   
    Можно пойти другим путем. Рисовать не на TImage, а использовать шрифты. 
    На http://fontello.com/ сделал шрифт из двух символов - черный квадрат и белый квадрат. Рисовальщик из меня никудышний, не разобрался как увеличить высоту символов в SVG иконке. Шрифт подключил к проекту, отображаю на Memo, у которого установлен мой шрифт.
    Код такой:
    procedure TfmMainQRShare.Update; var Row, Column, I : Integer; S : String; ChBlack, ChWhite : String; begin Memo.BeginUpdate; Memo.Lines.Clear; ChBlack:=Char($e802); ChWhite:=Char($e803); QRCode.Free; QRCode := TDelphiZXingQRCode.Create; try QRCode.Data := edtText.Text; QRCode.Encoding := TQRCodeEncoding(cmbEncoding.ItemIndex); QRCode.QuietZone := StrToIntDef(edtQuietZone.Text, 2); for Row := 0 to QRCode.Rows - 1 do begin S:=''; for Column := 0 to QRCode.Columns - 1 do begin if (QRCode.IsBlack[Row, Column]) then S:=S+ChBlack else S:=S+ChWhite; end; Memo.Lines.Add(S); end; finally end; Memo.EndUpdate; end; На картинке видны горизонтальные пробелы между символами, в какой то момент мне удалось методом тыка (редактированием шрифта) от них избавится, но слетела ширина белого квадрата. Оставил вариант который хотя бы читается.

  18. Like
    enatechno получил реакцию от Евгений Корепов в Cancel в InputQuery   
    и не только...
    What's New - Berlin:
    Simplified Dialog API
    Several procedures and functions to show dialog boxes are now deprecated, and have been replaced by the
    procedures and functions of the new IFMXDialogServiceAsync and IFMXDialogServiceSync platform services
    that provide support for synchronous and asynchronous dialog boxes, respectively.
    The following table summarizes the API changes:
    Deprecated Members
    New Members 
    FMX.Dialogs.ShowMessage*
    FMX.Dialogs.ShowMessageFmt*
    FMX.Dialogs.ShowMessagePos
    ShowMessageAsync
    ShowMessageSync
     
    FMX.Dialogs.MessageDlg
    FMX.Dialogs.MessageDlgPos
    FMX.Dialogs.MessageDlgPosHelp
    FMX.Platform.IFMXDialogService.MessageDialog 
    MessageDialogAsync
    MessageDialogSync
     
     
    FMX.Dialogs.InputBox
    FMX.Dialogs.InputQuery
    FMX.Platform.IFMXDialogService.InputQuery 
    InputQueryAsync
    InputQuerySync
     

    * ShowMessage and ShowMessageFmt are not really deprecated, but you may want to use ShowMessageAsync
    or ShowMessageSync instead nonetheless.

    Two new helper classes have been created as well: TDialogServiceAsync and TDialogServiceSync. These helper
    classes provide class methods and functions that allow you to call the new procedures and functions for dialog
    boxes without the need of an instance of the corresponding dialog box platform service.
    Other FireMonkey
  19. Like
    enatechno получил реакцию от Rusland в Cancel в InputQuery   
    и не только...
    What's New - Berlin:
    Simplified Dialog API
    Several procedures and functions to show dialog boxes are now deprecated, and have been replaced by the
    procedures and functions of the new IFMXDialogServiceAsync and IFMXDialogServiceSync platform services
    that provide support for synchronous and asynchronous dialog boxes, respectively.
    The following table summarizes the API changes:
    Deprecated Members
    New Members 
    FMX.Dialogs.ShowMessage*
    FMX.Dialogs.ShowMessageFmt*
    FMX.Dialogs.ShowMessagePos
    ShowMessageAsync
    ShowMessageSync
     
    FMX.Dialogs.MessageDlg
    FMX.Dialogs.MessageDlgPos
    FMX.Dialogs.MessageDlgPosHelp
    FMX.Platform.IFMXDialogService.MessageDialog 
    MessageDialogAsync
    MessageDialogSync
     
     
    FMX.Dialogs.InputBox
    FMX.Dialogs.InputQuery
    FMX.Platform.IFMXDialogService.InputQuery 
    InputQueryAsync
    InputQuerySync
     

    * ShowMessage and ShowMessageFmt are not really deprecated, but you may want to use ShowMessageAsync
    or ShowMessageSync instead nonetheless.

    Two new helper classes have been created as well: TDialogServiceAsync and TDialogServiceSync. These helper
    classes provide class methods and functions that allow you to call the new procedures and functions for dialog
    boxes without the need of an instance of the corresponding dialog box platform service.
    Other FireMonkey
  20. Like
    enatechno получил реакцию от Равиль Зарипов (ZuBy) в Cancel в InputQuery   
    и не только...
    What's New - Berlin:
    Simplified Dialog API
    Several procedures and functions to show dialog boxes are now deprecated, and have been replaced by the
    procedures and functions of the new IFMXDialogServiceAsync and IFMXDialogServiceSync platform services
    that provide support for synchronous and asynchronous dialog boxes, respectively.
    The following table summarizes the API changes:
    Deprecated Members
    New Members 
    FMX.Dialogs.ShowMessage*
    FMX.Dialogs.ShowMessageFmt*
    FMX.Dialogs.ShowMessagePos
    ShowMessageAsync
    ShowMessageSync
     
    FMX.Dialogs.MessageDlg
    FMX.Dialogs.MessageDlgPos
    FMX.Dialogs.MessageDlgPosHelp
    FMX.Platform.IFMXDialogService.MessageDialog 
    MessageDialogAsync
    MessageDialogSync
     
     
    FMX.Dialogs.InputBox
    FMX.Dialogs.InputQuery
    FMX.Platform.IFMXDialogService.InputQuery 
    InputQueryAsync
    InputQuerySync
     

    * ShowMessage and ShowMessageFmt are not really deprecated, but you may want to use ShowMessageAsync
    or ShowMessageSync instead nonetheless.

    Two new helper classes have been created as well: TDialogServiceAsync and TDialogServiceSync. These helper
    classes provide class methods and functions that allow you to call the new procedures and functions for dialog
    boxes without the need of an instance of the corresponding dialog box platform service.
    Other FireMonkey
  21. Like
    enatechno получил реакцию от Kitty в Cancel в InputQuery   
    и не только...
    What's New - Berlin:
    Simplified Dialog API
    Several procedures and functions to show dialog boxes are now deprecated, and have been replaced by the
    procedures and functions of the new IFMXDialogServiceAsync and IFMXDialogServiceSync platform services
    that provide support for synchronous and asynchronous dialog boxes, respectively.
    The following table summarizes the API changes:
    Deprecated Members
    New Members 
    FMX.Dialogs.ShowMessage*
    FMX.Dialogs.ShowMessageFmt*
    FMX.Dialogs.ShowMessagePos
    ShowMessageAsync
    ShowMessageSync
     
    FMX.Dialogs.MessageDlg
    FMX.Dialogs.MessageDlgPos
    FMX.Dialogs.MessageDlgPosHelp
    FMX.Platform.IFMXDialogService.MessageDialog 
    MessageDialogAsync
    MessageDialogSync
     
     
    FMX.Dialogs.InputBox
    FMX.Dialogs.InputQuery
    FMX.Platform.IFMXDialogService.InputQuery 
    InputQueryAsync
    InputQuerySync
     

    * ShowMessage and ShowMessageFmt are not really deprecated, but you may want to use ShowMessageAsync
    or ShowMessageSync instead nonetheless.

    Two new helper classes have been created as well: TDialogServiceAsync and TDialogServiceSync. These helper
    classes provide class methods and functions that allow you to call the new procedures and functions for dialog
    boxes without the need of an instance of the corresponding dialog box platform service.
    Other FireMonkey
  22. Like
    enatechno получил реакцию от rareMax в Cancel в InputQuery   
    и не только...
    What's New - Berlin:
    Simplified Dialog API
    Several procedures and functions to show dialog boxes are now deprecated, and have been replaced by the
    procedures and functions of the new IFMXDialogServiceAsync and IFMXDialogServiceSync platform services
    that provide support for synchronous and asynchronous dialog boxes, respectively.
    The following table summarizes the API changes:
    Deprecated Members
    New Members 
    FMX.Dialogs.ShowMessage*
    FMX.Dialogs.ShowMessageFmt*
    FMX.Dialogs.ShowMessagePos
    ShowMessageAsync
    ShowMessageSync
     
    FMX.Dialogs.MessageDlg
    FMX.Dialogs.MessageDlgPos
    FMX.Dialogs.MessageDlgPosHelp
    FMX.Platform.IFMXDialogService.MessageDialog 
    MessageDialogAsync
    MessageDialogSync
     
     
    FMX.Dialogs.InputBox
    FMX.Dialogs.InputQuery
    FMX.Platform.IFMXDialogService.InputQuery 
    InputQueryAsync
    InputQuerySync
     

    * ShowMessage and ShowMessageFmt are not really deprecated, but you may want to use ShowMessageAsync
    or ShowMessageSync instead nonetheless.

    Two new helper classes have been created as well: TDialogServiceAsync and TDialogServiceSync. These helper
    classes provide class methods and functions that allow you to call the new procedures and functions for dialog
    boxes without the need of an instance of the corresponding dialog box platform service.
    Other FireMonkey
  23. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в Переход по нажатию кнопки "Enter"   
    есть два способа
    1) выставить правильные TabStop'ы (TabOrder) контролам и ReturnType = Next
    2) самому присваивать фокус следующему компоненту, при нажатии на VK_RETURN
  24. Like
    enatechno отреагировална Rusland в Рисование окружности   
    Как-то так
    #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.fmx" TForm1 *Form1; int c=0; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { c=c+20; Arc1->EndAngle=c; if (c<90) {Text1->Text="4";} else if (c<180) {Text1->Text="3";} else if (c<270) {Text1->Text="2";} else if (c<360) {Text1->Text="1";} else if (c==360) {Timer1->Enabled=False;Text1->Text="0";c=0;} } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Arc1->EndAngle=0; Timer1->Enabled=true; } //---------------------------------------------------------------------------  
    ArcTimer.zip
  25. Like
    enatechno отреагировална Равиль Зарипов (ZuBy) в DeviceInfo - модуль для получения информации о девайсе   
    DeviceInfo - модуль для получения информации о девайсе
    Android || Windows || IOS || MAC OS
      

    Intel планшет

    для Андроида нужно включить разрешения (permission)
    Ссылка на GitHub
×
×
  • Создать...