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

krapotkin

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

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

  • Посещение

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

    209

Сообщения, опубликованные krapotkin

  1. см. пост №2

    клиент-серверное приложение требует сервер. сервер есть у вас?

    на клиенте будет всего 5 строк

    h:=TIDHTTP.Create(nil);
    try
      h.get('http://www.myserver.com/mypath/myfile.html?edit1=xxx&edit2=yyy');
    finally
      h.free;
    end;

    а сервер можно писать на PHP, Delphi, ASP, JS и еще 100500 вариантов

  2. вполне можно без компонентов пользоваться просто WinApi

    portNum='\\.\COM28';
    CommHandle:= CreateFile(portNum,GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,0);
    

    ссылка

  3. улучшения:

    1.заменил Item.OnClick на List.OnItemClick, стало все с первого раза выбираться

    2.подсказка к выбранному тексту перевыводится

    3. добавлено сокращение ул. б-р, пр. и т.д.

    4. в разряд feature - (ZuBy, п.4) - если стереть введенный текст, остается размытый след от предыдущего текста O_O.

    "это не я" )))  Я пытался сделать скриншот, форма перерисовывается и на фотке уже без косяков ))) улик нет...

    Это касается только стиля Transparent. После замены его на другой проблемы нет.

     

    обновление

     

    P.S. вопрос - как заливать сюда файлы ?

    мой яндекс диск - не лучшее место для долговременного хранения...

  4. первое приближение чуть улучшенного TAutocompleteEdit

    пример, думаю крайне полезный и может расширить оригинальную статью

    можно взять тут (не получается выкладывать на форум)

    Dbzb2Rgt.png

    буду признателен, если найдете ошибки

    если нетрудно, ответьте plz на вопросик, почему на Android клик по выбранному ListBoxItem срабатывает только со второго раза?

  5. не понравился ComboEdit, думал,что это нормальный аналог Windows ComboBox, но нет...

    под андроид это просто popup, еще и с кнопками

    поэтому использовал для выбора города TComboBox

     

    для "тру" Combo сейчас доделываю вариант из этой темы

    думаю в базовой платформе не хватает этого очень нужного компонента с динамической подгрузкой items

  6. Ну и до конца чтобы разрешиться...

    Нет ли смысла рабочий код вынести из DoChangeTracking в MMDataChanged ?

    Допустим, я запущу отдельный поток лазить в интернет.

    При возврате он должен вызвать сообщение, что модель изменилась. И механизм сработает опять.

    Как это сделать правильно?

  7. Вдохновленный статьей Ярослава Бровина про автозавершение, решил воспользоваться ей и сделать для своей программы автозавершение с хождением в интернет.

    Delphi XE8.1. Андроид.4.4.2 на телефоне

    Мне требуются варианты адресов город/улица/дом по введенному тексту, поэтому создан AddrAutocomplete-style.

    Введенная строка передается некоему сервису, он возвращает список релевантных вариантов. Так что я выбросил из исходного текста все сравнения со списком вариантов и т.п.

    Также выброшена реакция на сообщение изменения данных модели, т.к. мы и так перехватываем DoChangeTracking, что и приводит к изменению модели. Масло масляное имхо.

    Здесь для примера обращения к сервису удалены, оставлен только готовый список FSuggestions

     

    И тут я столкнулся с проблемой.

    Наберите в edit Ба  - выпадет список 'Бабушкина','Бабушкина 1','Бабушкина 2','Бабушкина 3','Бабушкина 32','Бабушкина 5'

    теперь пробел, и оппа - я не могу вводить цифры с клавиатуры!

    Причем не генерируется даже событие OnKeyDown!

    Недавно сталкивался с неверным поведением нестандартной клавиатуры, поэтому сменил Swipe на стандартную. Не помогло.

    На планшете (Анд.4.1.1) тот же эффект.

    Если компилировать под Win32 - все нормально.

     

    Всю голову сломал. Помогите plz

    код

     

    apk

     

     

     

     

  8. Есть пример от Sarina Dupont

    там ставится маркер по клику на MapView

    картинка на маркер берется из TImage

    MarkerDescr.Icon := Image1.Bitmap;

    я хотел заменить источник картинок с Timage на TImageList

    и пошли всякие непонятные пока моменты - по аналогии со старым ImageList

    брал Imagelist.GetBitmap(sz,0) - нет видимого результата

    стал параллельно копировать это же в Timage - в нем есть (с описанными эффектами), но присвоить на маркер - Segmentation Fault

     

    вариант

    ImageList1.Source[0].MultiResBitmap.Items[0].Bitmap;

    вроде подходит...

     

    P.S.

    Может, тогда объясните заодно. Если самому создать битмап, закрасить его, например, красным, то в Image он копируется хорошо, в marker.Icon - не работает

    в лучшем случае, мусор показывает.

  9. дополнение

    красная рамка по-прежнему не понята мной

    но размер картинки на выходе зависит от SZ

    т.е. подогнать ее к нужному размеру я подогнал, но хотелось бы и смысл шаманства узнать

    я думал,что Fit за меня должен все это сделать...

  10. В примере по TImageList фигурирует TGlyph, который к нему подключен напрямик.

     

    А как старым способом достать оттуда нужный битмап, точнее png?

    Dbzb2Rbv.png

    заинтересовало, почему в красной рамке 16 x 16; пробовал менять на 64 x 64

    код 

    sz.cx:=64;
    sz.cx:=64;
    img1.Bitmap:=il2.Bitmap(sz,0);
    

    16x16 imageWrapMode = Fit

    Dbzb2Rbw.png

    64x64 imageWrapMode = Fit

    Dbzb2Rbx.png

    16x16 imageWrapMode = Center

     

    Dbzb2RbB.png

    64x64 imageWrapMode = Center

    Dbzb2Rbz.png

     
    что-то ни один вариант не нравится
    еще картинка явно вылазит из самого TImage O_O
     
    как же правильно?
  11. вот видео

    вот текст

    var
      Form1: TForm1;
    
    
    implementation
    
    
    {$R *.fmx}
    const
    SPEED = 10;
    MARGIN = 20;
    
    
    procedure TForm1.FormResize(Sender: TObject);
    begin
      lbl1.Text := Format('%d x %d',[width, height]);
    end;
    
    
    procedure TForm1.FormShow(Sender: TObject);
    begin
      txt1.Position.Point := PointF(margin,MARGIN);
      txt2.Position.Point := pointf(width - margin - txt2.Width, MARGIN);
      txt3.Position.Point := pointf(width - margin - txt3.Width, height - margin - txt3.Height);
      txt4.Position.Point := pointf(margin, height - margin - txt4.Height);
    
    
      txt1.Tag := 1;
      txt2.Tag := 2;
      txt3.Tag := 3;
      txt4.Tag := 4;
    end;
    
    
    procedure TForm1.MoveText(t: TText);
    begin
      case t.Tag of
        1:begin
          t.Position.X := t.Position.X + SPEED;
          if t.Width + t.Position.X + MARGIN >= Width then
            t.Tag := 2;
        end;
        2:begin
          t.Position.Y := t.Position.Y + SPEED;
          if t.Height + t.Position.Y + MARGIN >= Height then
            t.Tag := 3;
        end;
        3:begin
          t.Position.X := t.Position.X - SPEED;
          if t.Position.X - MARGIN <= 0 then
            t.Tag := 4;
        end;
        4:begin
          t.Position.Y := t.Position.Y - SPEED;
          if t.Position.Y - MARGIN <= 0 then
            t.Tag := 1;
        end;
      end;
    //  t.Text := t.Name + ' ' + Format('%d x %d',[round(t.Position.x), Round(t.Position.y)]);
    end;
    
    
    procedure TForm1.tmr1Timer(Sender: TObject);
    begin
      MoveText(txt1);
      MoveText(txt2);
      MoveText(txt3);
      MoveText(txt4);
    end;
    
    
    end.
×
×
  • Создать...