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

master webs

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

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

  • Посещение

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

    6

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

  1. Если вы хотите под андроид сделать то TNotificationCenter вполне справляется у меня работает оповещение о новых заказах, А по клику на оповещения я   их со шторки удаляю и обновляю список в самом приложении.

     

    вод под ios хотелось бы у знать о вашем костеле )  так как очень надо сделать такое же  и в ios 

  2. А так я говорю, не надо делать из мобильных приложений - сервер приложений!

    Они ограничены! Это Вам не десктоп!

    не понимаю зачем тогда компонент NotificationCenter когда приложение запущено я и так все увижу

    и второй вопрос  работают же в фоновом режиме  почтовые клиенты например и никаких проблем не возникает или они работают черз push ?

  3. Пользователь активирует приложение и оно сработает!

    Не могу понять в чем проблема у Вас?

    Или Вы хотите из телефона сервер приложений сделать?

    Тогда так не получится, это телефон, а не полноценный десктопный компьютер!

    правильно сработать  должно после актвации приложения  но  оно также должно работать в фоне проверять наличие обновления информации на сервере и еслси таковы есть  уведомлять  клиента

  4. обработчик работает  очень быстро  делает запрос на сервер получает json строку и дальше условие если изменилось  поступает уведомление если нет  должен через определеный период  времени опять сработать не могу найти никакой информации  подскажите хоть в какую сторону копать

  5. К слову, не все приложения "замораживаются" на iOS, а именно - сервисы определения местоположения, воспроизведение музыки и VoIP-звонки. Так что если хотите, чтобы ваше приложение работало в фоне, научите его (приложение) например получать координаты местоположения.

     

    Кстати, все изменилось с iOS 7, подробнее тут.

    Добрый день научить приложения получать кординаты  не проблема  только зачем приложению которое  запрашивает инфу на сайте   определять место положение  чтоб вывводить уведомление  NotificationCenter 

     

    проигрывать музыку тоже не вариант так как  приложения не пропустят в appstire

     

    возможно уже ктото нашел решения как всетаки заставить работать в фоне

    сделать изменения в info.plist не проблема  даже в списке  обновления контента приложение появилось  но я немогу придумать  замену таймеру чтоб все отрабатывалось когда приложение скрыто

  6.  

    Добрый день,

    1. Делаете стиль для итема, в виде панельки
    2. Устаналиваете в лист боксе размер итема: ItemHeight, ItemWidth.
    3. Для всех итемов устанавливаете ваш стиль
    4. Все готово.

    P.S. TGridLayout не лучший выбор при большом количестве итемов. Так как листбокс реально грузит стили только для видимой части итемов. И при прокрутке только меняет стили местами. А TGridLayout загрузит все элементы. В итоге проигрышь по памяти и по скорости.

    Ярослав, где бы почитать поподробнее и покачественнее про изменение стилей?

     

    Добрый день со стилями все очень просто кликаете по нужному компоненту правой там есть два пунк которые вам нужны 

    edit custom stail (свой уникальный стиль)

    edit default stail (дефолтный стиль для всех копий компонентов по умолчанию)

    при клике перейдете в редактор  а там все просто  

    post-1039-0-70247400-1435315466.jpg

  7. Добрый день

     

    в стилях есть  картинка  свого рода кнопка для удаления  итема из списка listbox

    на картинке срабатывает событие  OnClick.  хочу передать Tag стилевого елемента для последующего удалени итема из списка

    пытаюсь указать tag для стилевого елемента (вроде все отлично прописываю)

     

    а вытянуть для запуска процесса удаления не могу

     

    процедура добавления  значения  Tag  и событие  для OnClick

    LBItem.StylesData['delet.Tag']:=strtoint(names.Value);
    LBItem.StylesData['delet.OnClick']:=TValue.From<TNotifyEvent>(form1.deletitemcart);

    процедура получения  данных

    procedure tform1.deletitemcart(Sender: TObject);
    begin
     ShowMessage( 'id= '+ tag.ToString );
    end;

    подскажите в чем ошибка

  8. разобрался может кому  будет нужно
    procedure TForm1.shopcartItemClick(const Sender: TCustomListBox;
      const Item: TListBoxItem);
      var
    edit: TListBoxItem;
    begin
      if shopcart.Selected <> nil then
      begin
        edit:=shopcart.Selected;
        InputBox('Изменить количество', '', edit.StylesData['textstyle'].ToString,
          procedure(const AResult: TModalResult; const AValue: string)
          begin
            edit.StylesData['textstyle']:= AValue;
          end);
      end;
  9. Добрый день написал процедуру для  редактирования  текста в item

    procedure TForm1.itemedit;
    var
    s: TListBoxItem;
    begin
      s:=shopcart.Selected;
      s.StylesData['textstyle']:=InputBox('Изменить количество','шт.',s.StylesData['textstyle'].ToString);
    end;

    под win все работает красиво, но под андроид получаю ошибку

     
    blocking dialogs not implemented on this platform
     
    подскажите как изменить процедуру чтоб заработало и в андроиде
  10. добрый день использую связку RESTResponseDataSetAdapter + ClientDataSet + BindSourceDB + grid

    гружу примерно  2000 записей при первом заполнении все  хорошо и быстро но при повторном  все зависает время увеличивается раз в 5  и даже при закрытии программы  она долго думает и  чаще всего появляется сообщения что программа не отвечает

    если ставлю до 500 записей  работает  относительно быстро

     

    подскажите в чем может быть проблема

     

     

    попробовал сделать тоже самое в vlc тотже результат изменилась скорость работы только когда  подключил все к dbgrid

     

     

    оказалась причина в компоненте ClientDataSet  заменил его FDMemTable FireDAC заработало побыстрее

    но всеравно  на 2000 записей тормозит думаю тему можно перенести в другой раздел

  11. Добрый день столкнулся такой проблемой до этого использовал StringGrid и заполнение в цикле  происходило без проблем

    Form1.StringGrid1.RowCount := Form1.StringGrid1.RowCount + 1;
    Form1.StringGrid1.Cells[0, i] := quantity.Value;
    Form1.StringGrid1.Cells[1, i] := name.Value;
    Form1.StringGrid1.Cells[2, i] := status.Value;
    Form1.StringGrid1.Cells[3, i] := adres.Value;
    Form1.StringGrid1.Cells[4, i] := koment.Value;
    Form1.StringGrid1.Cells[5, i] := orderdate.Value;
    Form1.StringGrid1.Cells[6, i] := orderdostavka.Value;
    Form1.StringGrid1.Cells[7, i] := statuss.Value;

    теперь не могу понять как заполнять  колонки  grida 

    подскажите пожалуйста  как обращаться к конкретной ячейке в строке

  12. обнаружилась проблема  при сохранении картинок с сервера если формат  jpg все отлично

    если же формат png получаю ошибку

    The specified bitmap format is not supported

    сохраняю картинку самым простым способом

     

    LBItem.ItemData.Bitmap.SaveToFile(TPath.GetDocumentsPath + TPath.DirectorySeparatorChar + '/tm'+nim);

     

     

    сработал обман в конце дописал в ручном режиме  jpg и начало работать   не знаю насколько  хорошо так делать

  13. Добрый день есть рейтинг материалов скажем так  максимально 10 шаг 0,1

    хотелось бы отобразить его в виде звёзд 5 штук

    как можно подобное  сделать что применить думал над вариантов готовых картинок но тогда надо  сделать 100 вариантов и держать их в приложении думаю будет глупо так выводить рейтинг

    с рисованием на канве совсем незнаком если  допустим  примеры можно найти  то как правильно отрисовать 5 звезд с заливкой цветом взависимости от рейтинга например 9,5/10

  14. В чём проблема? Напишите функцию, которая будет сохранять загруженные картинки в память устройства, а также следить за актуальностью и необходимостью хранения той или иной картинки в памяти устройства.

    да спасибо не подумал так реализовать наверное надо больше отдыхать )

  15. Добрый день  возможно вопрос глупый но думаю актуальный загружаю картинки с сервера но при этом скорость работы  значительно увеличивается.

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

     

  16. Понятие фокуса на итеме не совсем уместно, т.к. итемы в ListView не являются контролами. У листвью есть Selected. А насчет ваших подкатегорий сложно гадать, т.к. не видно что вы делаете в "loadcat".

    В любом вопросе вы должны указать что вы хотите, что получается и что вы делаете. Я правильно понимаю, что изначально у вас заполнен ListView, потом по клику на итем список одолжен чищаться и заполняться новыми элементами? А на деле у вас после этого еще раз срабатывает клик ивент и список соответственно еще раз заполняется? Если это бывает не всегда, то я бы для начала порекомендовал поставить счетчик на ивенте OnMouseDown, не нажимаете ли вы иногда действительно 2 раза. Если проблема в этом, то можно, например, на время обработки клика по элементу снять обработчик событий с итемклика, а по завершении вернуть его на место.

    да все верно список  очищаю и заполняю по новому

    вот процедура

     

    procedure loadtovar(cat: string);

    begin

    Form1.TabControl3.ActiveTab:=Form1.TabItem9;

    Form1.TabControl1.ActiveTab:=Form1.TabItem1;

    Form1.MultiView1.HideMaster;

    IdHTTP := TIdHTTP.Create(nil);

    try

    JSONs:= IdHTTP.Get ('http://sayt.ru/api/category.php?paren='+ cat);

    finally

    IdHTTP.Free;

    end;

    jsonObiekt := TJSONObject.ParseJSONValue(JSONs) as TJSONObject;

    If jsonObiekt.GetValue('Erorr').Value = '1' then

    begin

    loadtovarcategory(cat);

    Form1.TabItem10.Visible:=true;

    Form1.TabControl3.ActiveTab:=Form1.TabItem10;

    end;

    If jsonObiekt.GetValue('Erorr').Value = '0' then

    begin

    Form1.category.Items.Clear;

    try

    streams := jsonObiekt.Get('Categories').JsonValue as TJSONArray;

    liczbaStrumieni := streams.Size;

    for i := 0 to liczbaStrumieni - 1 do

    begin

    stream := streams.Get(i) as TJSONObject;

    channel := stream.Get('item').JsonValue as TJSONObject;

    name := channel.Get('id').JsonValue as TJSONString;

    quantity:= channel.Get('name').JsonValue as TJSONString;

    suma:= channel.Get('image').JsonValue as TJSONString;

    nm := name.Value;

    LItem := Form1.category.Items.Add;

    LItem.Text :=quantity.Value;

    LItem.Tag :=strtoint(name.Value);

    If suma.Value = 'none' then

    begin

    Bitmaps := Form1.GetImage('none');

     LItem.Bitmap.Assign(Bitmaps);

    end;

    If suma.Value <> 'none' then

    begin

    ms := LoadWebImage(suma.Value);

     LItem.Bitmap.LoadFromStream(ms);

    ms.Free;

    end;

    end;

    finally

    end;

    end;

    end;

  17. Добрый день ситуация такая

    при создании формы заполняю listwiev у компонента  при клике на items установлена процедура 

    procedure TForm1.categoryItemClick(const Sender: TObject;
      const AItem: TListViewItem);
    begin
    loadcat(inttostr(AItem.tag));
    end;
     
    дальше происходит следующе идет парсинг json удаление  списка и заполнение по новой грубо говоря  категории подкатегории
     
    при создании формы все прекрасно работает при  открытии таба  также прекрасно перезаполняет листвиев но вот при клике  по итему   перезеполнение  идет  но происходит  двойной переход  открывает подкатегорию и сразу очищает список и открывает подкатегорию 3го уровня 
    происходит так не всегда   понят  причину так и не смогу  допускаю что нужно помимо очистки списка удалть и фокус так как  он остается  на мести даже еслли итема нет
  18. да простите   запутано написал

     

    например я подгружаю  в json список картинок   делаю динамический компонент отображающий картинки

    размер картинки  100 на 100

    телефон держим вертикально  картинки стоят по 2 в ряд 

    если же происходит смена  ориентации экрана  в горизонтальное положение  картинок  например  должно быть 4 в каждом ряду

     

    самих картинок  может быть  много

×
×
  • Создать...