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

Лидеры

  1. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      5

    • Постов

      2 124


  2. krapotkin

    krapotkin

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


    • Баллы

      2

    • Постов

      2 185


  3. xenon54

    xenon54

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


    • Баллы

      1

    • Постов

      385


  4. Вячеслав

    Вячеслав

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


    • Баллы

      1

    • Постов

      127


Популярный контент

Показан контент с высокой репутацией 28.07.2015 во всех областях

  1. Уважаемые разработчики, скажите пожалуйста, а будет ли у компонента свойство Max? А то получается с левой стороны проценты, а с правой те же самые проценты, только в количественном эквиваленте. Поясню: Если бы было например максимальное значение 200, а текущее положение 150, то слева было бы написано 75%, а с правой стороны 150/200. Сейчас такого установить невозможно.
    1 балл
  2. Вячеслав

    com-порт FireMonkey

    Авторство всецело не мое, только правки вносил, т.к. в разных версиях студии код вел себя по-разному. Прощу прощения за то, что выкладываю в неудобной форме, просто из моего проекта сейчас это будет уже достаточно проблематично вытащить. Код для использования: На форме лежат Мемо, кнопки открытия/закрытия, эдит для отправляемых текстов и кнопка отправить. в паблике у формы добавляем объект GPort: TComPort; // ****************************************************************************** // ПРОЦЕДУРЫ РАБОТЫ С COM ПОРТОМ // открываем порт procedure TFormChannels.OpenPort(PortNum: Byte); begin GPort := TComPort.Create(PortNum, br9600); GPort.OnRead := FormChannels.OnRead; GFlagOpen := true; FormChannels.ButtonClosePort.Enabled := true; end; // закрываем порт procedure TFormChannels.ClosePort; begin GPort.Free; end; // отправляем в порт данные procedure TFormChannels.WritePort(strWrite: string); var arrBytes: array of Byte; i: Integer; begin if GFlagOpen = False then // проверяем, открыт ли порт OpenPort(strtoint(edtPort.Text)); // если нет, то открываем SetLength(arrBytes, Length(strWrite)); for i := Low(arrBytes) to High(arrBytes) do arrBytes[i] := Ord(strWrite[i + 1]); GPort.Write(arrBytes); arrBytes := nil; end; // читаем данные из порта procedure TFormChannels.OnRead(Sender: TObject; ReadBytes: array of Byte); var i: Integer; begin memRead1.Lines.BeginUpdate; for i := Low(ReadBytes) to High(ReadBytes) do begin if i > Low(ReadBytes) then memRead1.Text := memRead1.Text; // + '.'; memRead1.Text := memRead1.Text + char(ReadBytes[i]); end; // подчищаем заполняющийся Мемо if memRead1.Lines.Count > 5 then begin // memRead1.Clear; memRead1.Lines.Delete(0); memRead1.Lines.Delete(1); end; memRead1.Lines.EndUpdate; end; procedure TFormChannels.ButtonClosePortClick(Sender: TObject); begin ClosePort; end; // открываем порт кнопкой procedure TFormChannels.ButtonOpenPortClick(Sender: TObject); begin OpenPort(strtoint(edtPort.Text)); end; // отправляем в порт данные кнопкой procedure TFormChannels.btnWriteClick(Sender: TObject); begin WritePort(FormChannels.edtWrite.Text); end; // КОНЕЦ ПРОЦЕДУР РАБОТЫ С COM ПОРТОМ // ****************************************************************************** ComPort.zip
    1 балл
  3. xenon54

    ListViewItem Transpatent, как?

    У стиля листвью есть объект "itembackground" : TColorObject. Выставляете у него свойство "Color" в нужное вам значение с альфа каналом (как пример $11FF0000) и будет вам счастье.
    1 балл
  4. Brovin Yaroslav

    Аналог Post в FMX android

    С моей точки зрения, метод TThread.Queue имеет один весомый недостаток. А именно: Если вызов метода TThread.Queue идет в главном потоке, то код будет вызыван немедленно. class procedure TThread.Queue(const AThread: TThread; AMethod: TThreadMethod); var LSynchronize: PSynchronizeRecord; begin if AThread <> nil then AThread.Queue(AMethod) else begin New(LSynchronize); try LSynchronize.FThread := nil; LSynchronize.FSynchronizeException := nil; LSynchronize.FMethod := AMethod; Synchronize(LSynchronize, True); // <-- Смотрим сюда finally if MainThreadID = CurrentThread.ThreadID then Dispose(LSynchronize); end; end; end; А потом на кусочек этого кода: class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False); var SyncProc: TSyncProc; SyncProcPtr: PSyncProc; begin if CurrentThread.ThreadID = MainThreadID then begin if Assigned(ASyncRec.FMethod) then ASyncRec.FMethod() else if Assigned(ASyncRec.FProcedure) then ASyncRec.FProcedure(); end else Из реализации метода Synchronize, как раз и видно, что код будет вызван немедленно, если текущий тред - это главный поток. Итог TThread.Queue заменяет PostMessage, если вызов идет не из главного потока. Если вызов TThread.Queue идет из главного потока, то это равносильно прямому вызову процедуры или метода.
    1 балл
  5. Если вы хотите, чтобы ваш класс компонента мог быть использован в TStyleBook, нужно пометить ваш дизайн тайм пакет, как всегда загружаемым: ForceDemandLoadState(dlDisable); В этом случае при старте среды, ваш пакет с компонентами не зависимо от того, использует ли среда или нет, будет загружен. А значит ваши компоненты будут зарегистриованы в среде.
    1 балл
  6. kami

    Аналог Post в FMX android

    TThread.Queue(nil, procedure begin my_code end); ?
    1 балл
  7. 1 балл
  8. вместо tagString можно использовать Model.Data, это более концептуально верно
    1 балл
  9. Brovin Yaroslav

    Странное поведение XE8

    Добрый день, Да, ошибку исправлю. Используйте ComboBox.Clear; Вместо: ComboBox.Items.Clear;
    1 балл
  10. Требования к наличию у ученика: Наличие хорошего и быстрого интернет канала Skype RAD Studio XE10 Team Viewer
    1 балл
  11. Добавлена новая версия расширения компонентов FireMonkey. Новый пакет поддерживается только для XE6. Список возможностей: Progress Dialog - Добавлены события OnShow, OnHide. Progress Dialog - Исправлены утечки памяти на Андроид и IOS TfgProgressDialog - Добавлен метод для немедленного сброса прогресса без анимации ResetProgress. TfgActionSheet - Добавлена поддержка действий TAction. Так же теперь можно указать только по одной кнопке деструктивного и отменного типа. TfgColorsPanel - Добавлен новый контрол для выбора цветов из готовых пресетов. Поддерживает следующие наборы цветов: WebSafe, X11. Позволяет указывать свои наборы цветов. TfgGradientEdit - Добавлен новый контрол для задания градиента. TfgLinkedLabel - Добавлен новый контрол - метка со ссылкой. Открывает указанную ссылку в стандартном браузере. Поддерживает все платформы. Добавлены и улучшены примеры каждых контролов. Добавлен набор хелперов И другие улучшения на уровне кода. TfgActivityDialog Работа под iOS: Работа под Андроид (Выше, чем GingerBread 2.3): Работа под Андроид (GingerBread 2.3): TfgProgressDialog Работа под iOS: Работа под Андроид (Выше, чем GingerBread 2.3): Работа под Андроид (GingerBread 2.3): TfgActionSheet TfgColorsPanel TfgLinkedLabel
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...