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

walexw

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

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

  • Посещение

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

  1. Добрый день!
    Кто-нибудь делал на RAD-studio (хоть какой нибудь), реально работающее приложение под Windows CE.
    Мне нужно сделать прогу для сканера, на сканере Windows CE, интересует можно ли это замастрячить
    на рейде и потом задеплоидь на устройство, ну и то-бы все это работало.
    Если у кого есть такой опыт - поделитесь.
    Спасибо.

  2. Вопрос к знатокам SQL: как делается такой трюк?
    Есть процедура в БД с двумя входящими параметрами.
    Параметры D1 и D2 - это диапазон дат, за который надо выбрать записи из таблицы.
    Если оба введены, то вопросов нет, в WHERE пишу FieldDate >= D1 AND FieldDate <= D2
    Но D1 и D2 могут быть пустыми (оба или по одному), т.н. открытый диапазон.
    Как должен быть написан запрос в процедуре, что-бы учитывать это в WHERE для всех случаев?
    Спасибо.
    (вариант от текущей даты вычитать (добавлять) 100 лет вместо Null - не подходит)

  3. Вопрос наполовину по SQL наполовину по Delphi:
    Есть БД в ней процедура такого вида:
    SELECT DISTINCT FAM FROM TURNIR WHERE FAM=@par;
    SELECT DATE, PLAY, SCORE FROM TURNIR WHERE FAM=@par;
    В отчете (FastReport) первый запрос используется как "шапка"
    второй - это собственно сам набор данных, игры и счет выбранного человека.
    Мне необходимо на форме (проект виндовый) увидеть в гриде второй SELECT
    Если грид через DataSource подключаю к процедуре, то приходит первый.
    Не могу понять как обратиться к второму. При входе в FastReport там предлагается
    на выбор ADOQuery1 и соответственно ADOQuery2. И нет проблем.
    Кто знает как это повторить на форме, подскажите plz.
    (Да еще, БД не моя, править запрос, разбивать на два или писать новый у меня нет прав.)
    Спасибо.

  4. У меня второй год пошел этому косяку и нет никаких вариантов решения, кроме как принудительно убирать клаву при потере фокуса у эдит,
    а вход в следующий эдит сам ее открывает. За два года не встретилось ни одного устройства, где бы не проявился этот косяк.
    Удивительно, что на форуме почти никто про это не пишет.

  5. Пытаюсь разобрать чужой код (проект здоровый, процедур много)
    По ходу заполняется TreeView, откуда не понятно, надо найти.
    В процедуре регистрации панели (RegisterSetupPanel) последняя строчка  AddTreeTag
    там заполняется одна строка TreeView (значением TagPath: String), а всего строк 10,
    значит 10 раз отрабатывает. Внутри RegisterSetupPanel я "стою" в дебаггере,
    отследить получается только первую строчку, но кто "толкнул" неизвестно.
    Ссылки на запуск RegisterSetupPanel внутри проекта нет, вот мне и надо найти
    кто его "толкает".

    procedure TfrmSetup.RegisterSetupPanel(TagPath: String; aObject: TControl);
    var Frm: TCustomForm;
        i: integer;
    begin
      Frm := GetParentForm(TControl(aObject));
      if (Frm.Width+panLeft.Width)<Screen.Width then
        if(Frm.Width+panLeft.Width) > Width then
          Width:= Frm.Width+panLeft.Width;
      SetActionEnabled(TPanel(aObject), false);
      for i := 0 to Frm.ComponentCount - 1 do
        if Frm.Components is TActionList then begin
          frmSetup.InsertComponent(Frm.Components);
          Frm.RemoveComponent(Frm.Components);
          Break;
        end;

      aObject.Parent := panMain;
      aObject.Visible := false;
      AddTreeTag(nil, TagPath).Data := aObject;
    end;

  6. Проект на Delphi, Seattle
    Добавляю в таблицу новую запись, в моем варианте она становится первой в запросе.
    Обновляю listView который ее отображает.
    Мне надо, чтобы после этого программно отработала процедура клика по этой новой записи.
    Пишу:
    listView.Selected.Index := 0;
    Далее саму процедуру, но не понимаю, что подставить в скобки:
    listViewItemClickEx(const Sender: TObject; ItemIndex: Integer; const [Ref] LocalClickPos: TPointF; const ItemObject: TListItemDrawable);
    Подскажите plz.

  7. Способ решить эту проблему я ищу почти год, и хоть на форуме несколько раз упоминались похожие темы, решил создать еще одну, т.к. нет никакого решения (все просмотрел).
    На форме 2 или больше TEdit, переход с первого на второй по Enter (Next).
    Все что набрано в первом TEdit, при нажатии любой буквы второго TEdit переносится во второй плюс эта буква (см. скриншот)
    Все это происходит при включенном на телефоне "подсказчике" слов, но он удобен и огромное количество людей им пользуются.
    Приложений у меня было несколько. И на C++ и на Delphi. Использовал RAD XE 10
    Четыре планшета и три смартфона с Андроидами 4, 5, 6 для тестов. Клавиатуры и родные и Гугл.
    Все они как близнецы повторяют этот трюк и как избавится от него, никак не могу найти решение.
    Единственное, что помогает - отключить подсказки в самом телефоне, но это на своем.
    А те кто скачивают программу из интернета, им как быть?
    Благодарен за любые советы (подсказки).
    Сам я ищу возможность обнулить буфер клавиатуры при выходе с одного Эдита и входе в следующий.

    keyb.jpg

  8. БД SQLite
    Для поиска записей по текстовым полям, для игнорирования регистра использую примерно такую конструкцию:
    SELECT UPPER(city) FROM table1 WHERE id=1 OR id=100 (это запрос для примера, в реальном запросе UPPER стоит в WHERE)
    в 1-й записи Paris, отрабатывает PARIS
    в 100-й записи Париж, отрабатывает Париж (ни в верхний, ни в нижний регистр не переводится)
    Как сделать, чтобы и англоязычное и русскоязычное заполнение стринговых полей обрабатывалось одинаково правильно?

    Спасибо!
     

  9. Поначалу я сам догадался, что где-то надо для Андроида стиль задать. Ошибочно решил, что если включена компиляция под андроид, то и стиль его.
    Запутался короче.
    sunike, Vitaldj, спасибо за подсказку, теперь разобрался!

  10. В ‎13‎.‎10‎.‎2016 в 12:31, Andrey Efimov сказал:

    Если необходимо разместить текст слева от точки/кружочка, то придётся отредактировать стиль компонента. Кидаете компонент на форму, правый клик по нему и далее Edit Custom Style или Edit Default Style, далее уже редактируете стиль.

    Все сделал как научили. Зашел в  Edit Custom Style, там все просто, перенес текст влево. В проекте появился новый стиль, мне все понравилось, а главное просто на удивление.
    Но это оказалась половина истории. В мастер форме и винде действительно текст слева, а закачиваю приложение в смартфон - все по старому, кнопка слева, текст справа.
    Я сегодня уже как только не пробовал, на андроиде не слушается. В чем грабли?

  11. Раньше писал на С++, сейчас пробую на Дельфи. Не получается простая вещь.
    Надо выделить Detail по признаку

      lViewTour.BeginUpdate;
      lViewTour.Items.Clear;
      while not FDQuery.Eof do
      begin
        lvItem        := lViewTour.Items.Add;
        lvItem.Text   := FDQuery.FieldByName('name').AsString;
        lvItem.Detail := FDQuery.FieldByName('city').AsString;
        lvItem.Data['status'] := 'normal';
        if (FDQuery.FieldByName('status').AsInteger = 3) then
        begin
            lvItem.Data['status'] := 'red';
        end
        FDQuery.Next;
      end;
      FDQuery.Close;
      lViewTour.EndUpdate;
      lViewTour.Resize;
    Дальше написал
    procedure Tfrm.lViewTourUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean);
    var
      TextObject: TListItemText;
    begin
      TextObject    := AItem.Objects.FindDrawable('status') As TListItemText;
      if (TextObject = nil)  then
      begin
        TextObject       :=  TListItemText.Create(AItem);
        TextObject.Name  := 'status';
      end;
      TextObject.Visible :=  false;
      if (TextObject.Text = 'red') then
      begin
        AItem.Objects.DetailObject.TextColor := TAlphaColorRec.Red;
        AItem.Objects.TextObject.TextColor := TAlphaColorRec.Red;
      end
    end;
    По факту, у нужных записей текст перекрашивается в красный, а Детейл остается черным.
    Мне же нужно именно Детейл перекрасить.
    В чем ошибка?
    На С++ я применял
    TListViewItem::TListViewItemObjects *  _objects = (const_cast<TListViewItem*>(AItem))->Objects;
    И обходился без lvItem.Data['status']
    Как заставить Дельфи окрасить Детейл?
    Спаибо!

  12. Можно ли изменить цвет холста TMemo не прибегая к стилям?
    Как вариант попробовал цветной прямоугольник под TMemo подложить и выставил прозрачность.
    Для примера вроде получилось, но как только выставил TMemo - Align отличный от None, TMemo тут же опять
    становится белым игнорируя прозрачность.
    В чем смысл таких заморочек и что посоветуете по моему вопросу?
    Спасибо!

  13. Разместил приложение в GooglePlay (делал первый раз, поэтому столько вопросов)
    В разделе устройства, подтвердил все предложенные модели, их оказалось больше тысячи.
    Естественно, после установки, сам же попробовал установить программу на свои устройства.
    На смартфон программа встала сходу. Но...
    Есть у меня 10-ти дюймовый планшет Perfeo (китай), на него программа отказывается устанавливаться.
    Говорит: это не мобильное устройство.
    Симки в планшете нет, но два гнезда предусмотрены.
    Установка хочет работать только с мобильным устройством, что я сделал не так?
    Как подправить ситуацию?
    Если планшет соединить проводом к компу, программа через RAD studio ставится без проблем.
    Подскажите.

  14. Вопрос к знатокам GooglePlay
    Я первый раз разместил приложение в GooglePlay. Оно состоит из пустой базы данных и собственно самого приложения.
    Не сразу, но все получилось. Сейчас я доработал программу, добавил еще один отчет. Надо выпускать вторую версию.
    Вопрос, как мне правильно сделать?
    Те кто скачал первую версию, должны только код обновить до второй и не тронуть БД которую набрали на первой версии.
    А те кто новые, и увидят программу сразу со второй версии должны получить ее и пустую БД.
    Как такой трюк делается? Подскажите кто делал.
    Спасибо.

  15. В ‎29‎.‎09‎.‎2016 в 13:29, ZuBy сказал:
    
    void __fastcall domThread::UpdateAnimation()
    {
    frm->aIndic->Visible  = false;
    frm->aIndic->Enabled  = false;
    }

    незнаю как на си будет, но примерно так

    
    void __fastcall domThread::Execute()
    {
    Synchronize( UpdateAnimation );
    Terminate();
    } 

    ZuBy, спасибо, все так и сделал, получилось то что надо!

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