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

Maximus

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

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

  • Посещение

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

    9

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

  1. Like
    Maximus получил реакцию от Andrey Efimov в Обработка клавиатуры   
    if ord(KeyChar) = vkSpace then  
  2. Like
    Maximus отреагировална AliZairov в Update 2 + iOS 10.2   
    Привет. Hotfix PAServer XCode 8.2 30680
  3. Like
    Maximus отреагировална Равиль Зарипов (ZuBy) в Конфликт Hint и BorderStyle   
    ну и кому хочется сделать Ballon, а не прямоугольник
    копируем в проект и открываем FMX.Controls.Win.pas Ctrl+F -> constructor TWindowsHint.Create(const AHandle: TWindowHandle); FToolTipHandle := CreateWindowEx(0, TOOLTIPS_CLASS, nil, WS_POPUP or TTS_ALWAYSTIP or TTS_BALLOON, 0, 0, 300, 300, FNativeControlHandle, 0, hInstance, nil); TTS_BALLON - сделает закругленные подсказки со стрелкой сохраняем Готово!  
  4. Like
    Maximus отреагировална Равиль Зарипов (ZuBy) в Конфликт Hint и BorderStyle   
    я тут посидел немного, сделал костыль. особо не заморачивался
    копируем в проект и открываем FMX.Forms.pas Ctrl+F -> procedure TCommonCustomForm.SetShowHint(const Value: Boolean);  
    procedure TCommonCustomForm.SetShowHint(const Value: Boolean); begin FShowHint := Value; ReleaseLastHinted; // ZuBy *** if (not(csDesigning in ComponentState)) then begin FreeAndNil(FSharedHint); FSharedHint := THint.CreateNewInstance(Handle); end; // *** ZuBy end; сохраняем в событии OnCreate, OnShow пишем ShowHint := true; Готово!  
  5. Like
    Maximus отреагировална mixi в Утолщение линии при отрисовке на Canvas   
    1) окрыть project.dpr (меню.Project.View Source)
    добавить
    uses
      FMX.Types,
      ......
    begin
      //отключить использование канвы D2D
      GlobalUseDirect2D:= false;
      Application.Initialize;
    ....
    end.
    2) В главной форме приложения перекрыть OnFormCreate
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Quality:=TCanvasQuality.HighPerformance;
    ....
    end;
    Теперь PaintBox на форме в PaintBox1Paint рисует прямые в 1 пиксел, но без
    сглаживания.
  6. Like
    Maximus отреагировална HyperZen в Конфликт Hint и BorderStyle   
    Delphi Seattle Update 1

  7. Like
    Maximus получил реакцию от Alex7wrt в Открытие файлов перемещением из проводника на форму или один из ее элементов, Windows   
    Например через компонент TDropTarget.
  8. Like
    Maximus получил реакцию от Rusland в NetHTTPClient и SSL   
    По-моему для работы этого компонента не нужно складывать рядом libeay32.dll и ssleay32.dll, всё уже встроено должно быть.
  9. Like
    Maximus отреагировална AngryOwl в Как задать windowborderstyle   
    Ответы есть, конечно.
    Но Вам нужно их задавать отдельно. Внимательно читать, и, главное, с уважением относиться ко всем участникам. У большинства из нас просто нет времени, и стараемся отвечать кратко, только когда есть свободная минутка и знаем ответ.
     
    По поводу TWebBrowser - дождитесь ответа. Я, к сожалению, не могу ничего сказать, не пробовал.
     
    Что касается перемещения формы за любой элемент:
    - во-первых элемент, за который будете перемещать, должен иметь свойство HitTest = True
    - во вторых, в обработчике события этого элемента OnMouseDown ставьте StartWindowDrag
    - и в-третьих, чтобы менять размер формы, при этом не имея рамок и имея вид как был описан выше - разместите на форме элемент TSizeGrip
     
    все
  10. Like
    Maximus отреагировална AngryOwl в Поздравляю всех с Новым Годом!   
    Друзья!
    Поздравляю вас всех с Новым Годом!
    Желаю всем вам здоровья, счатья и благополучия в наступившем 2016 году!
    Пожелаю всем нам успехов в наших делах, проектах, разработках!
    Чтобы все у нас с вами сложилось)
     
    Отдельно хочу поздравить Бровина Ярослава и Ефимова Андрея!
    Пожелать Вам, ребята, и Вашим близким, успехов и благополучия!
     
    Еще раз - с Новым Годом!
     
    p.s. Надеюсь не забанят за то, что "не в тему" )))
  11. Like
    Maximus отреагировална AngryOwl в Поворот стрелки как на часах   
    Елки зеленые... Не подумал)
    вот исправлено на стандартный TImage
    SampleClock.zip
  12. Like
    Maximus отреагировална AngryOwl в Поворот стрелки как на часах   
    вдогонку, кому интересно

    SampleCPUUsage.zip
  13. Like
    Maximus отреагировална Brovin Yaroslav в Как сделать перемещение контрола мышкой/пальцем?   
    Добрый вечер,
     
    Перемещение контрола можно сделать двумя способами:
    Используя обычный набор событий OnMouseDown, OnMouseMove, OnMouseUp. Использовать для перемещения жесты. 1. Реализация с использованием событий мыши
    Эти события реализованы для всех платформ. В том числе они эмулируются на мобильных платформ, где понятия мыши, как такового нету. Это означает, что их можно использовать для реализации перетаскивания контрола. Это можно сделать, например, следующим образом:
     
    а) Создаем форму и кидаем на нее картинку. Я назвал ее DraggableImage.

    б) Заводим два поля.
    TForm5 = class(TForm) DraggableImage: TImage; procedure DraggableImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure DraggableImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single); procedure FormCreate(Sender: TObject); procedure DraggableImageMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); private FStartPos: TPointF; FPressed: Boolean; end; FStartPos - начальная локальная позиция мыши внутри нашего контрола (картинки), когда пользователь зажал кнопку мышки или опустил палец на экран. FPressed - флаг для сигнализирования, что пользователь опустил палец (зажал кнопку мыши) на нашу картинку и до текущего момента не снял с экрана. в) В конструкторе формы для перетаскиваемого контрола ОБЯЗАТЕЛЬНО задаем AutoCapture = True. Это позволит контролу генерировать события перемещения мыши, даже если курсор мыши ушел за локальные границы контрола.
    procedure TForm5.FormCreate(Sender: TObject); begin DraggableImage.AutoCapture := True; end;  г) В момент нажатия на картинку сохраняем локальную позицию мыши и задаем флаг FPressed = True
    procedure TForm5.DraggableImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin FPressed := True; FStartPos := TPointF.Create(X, Y); end; д) В момент отпускания кнопки мыши или убирания пальца с экрана сбрасываем флаг FPressed:
    procedure TForm5.DraggableImageMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin FPressed := False; end; е) И собственно меняем позицию картинки, когда мы ведем мышкой по картинке:
    procedure TForm5.DraggableImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single); var MoveVector: TVector; begin if FPressed then begin // Вычисляем локальное смещение относительно первоначальной позиции MoveVector := TVector.Create(X - FStartPos.X, Y - FStartPos.Y, 0); // Вычисляем смещение в координатах формы, чтобы учесть изменение // координат при смещении родительских контролов MoveVector := DraggableImage.LocalToAbsoluteVector(MoveVector); if DraggableImage.ParentControl <> nil then      MoveVector := DraggableImage.ParentControl.AbsoluteToLocalVector(MoveVector); // Перемещаем картинку на вычисленный вектор // Для RAD Studio XE5 DraggableImage.Position.Point := DraggableImage.Position.Point + MoveVector.ToPointF; // Для новых версий // DraggableImage.Position.Point := DraggableImage.Position.Point + TPointF(MoveVector); end; end; Этот кусок стоит прокомментировать, чтобы корректно выполнить перетаскивание контролу обязательно нужно вычислять смещение в абсолютных координатах формы. Причина в том, что если контрол повернут или входит один в другой, то нужно учитывать смещения всей цепочки родительских контролов до формы. Поэтому мы вначале вычисляем смещение в локальных координатах, затем вычисляем его в абсолютных координатах формы. А затем обратно переводим в локальные координаты родительского контрола. После чего изменяем позицию контрола на вычисленное смещение.
     
    Такой подход используется, в частности, в контроле TSelection, который так же можно перемещать мышкой или пальцем.
     
    P.S. Чтобы лучше понять это, нарисуйте на листке бумаги положения контрола и попробуйте вручную выполнить этот алгоритм с преобразованием координат. 
     
    Собственно говоря, такой подход отлично работает везде и не требует использования системы жестов.
    2. Реализация с использованием жестов
    Этот способ будет работать только на мобильных платформах, поскольку нужный жест Pan (если я правильно помню) не поддерживается под Windows. Поэтому в целом, первый вариант является универсальным и лучшим решением. 
×
×
  • Создать...