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

Лидеры

  1. rakhmet

    rakhmet

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


    • Баллы

      3

    • Постов

      73


  2. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      2

    • Постов

      2 517


  3. krapotkin

    krapotkin

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


    • Баллы

      2

    • Постов

      2 179


  4. Brovin Yaroslav

    Brovin Yaroslav

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


    • Баллы

      1

    • Постов

      2 124


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

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

  1. Вопрос: как определить, какое именно действие совершает пользователь - увеличивает или уменьшает? Ответ: на примере сэмпла, поставляемого в комплекте с Delphi, в файле C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Mobile Snippets\InteractiveGestures\ImageZoom\ImageZoomU.pas можно попробовать заменить одну часть процедуры: begin { zoom the image } LImage := TImage(LObj.GetObject); LImageCenter := LImage.Position.Point + PointF(LImage.Width / 2, LImage.Height / 2); LImage.Width := LImage.Width + (EventInfo.Distance - FLastDistance); LImage.Height := LImage.Height + (EventInfo.Distance - FLastDistance); LImage.Position.X := LImageCenter.X - LImage.Width / 2; LImage.Position.Y := LImageCenter.Y - LImage.Height / 2; end; на другую: begin { zoom the image } if EventInfo.Distance > FLastDistance then showmessage('zoom in') else showmessage('zoom out'); end; Что с этим делать дальше — думаю, объяснять излишне. Если кто знает более элегантное решение, не основанное на вычислении дистанции, — смело делитесь, не стесняйтесь.
    3 балла
  2. попробовать изменить так aItem.StylesData['Edit.OnKeyDown'] := TValue.From<TKeyEvent>(EditKeyDown(Self,key,KeyChar,Shift))
    1 балл
  3. procedure RttiClick(const Obj: TObject); // uses System.TypInfo; var M: TMethod; begin if Obj = nil then exit; M := GetMethodProp(Obj, 'OnClick'); if Assigned(M.Code) then TNotifyEvent(M)(Obj); end; использовать RttiClick(Button2);
    1 балл
  4. krapotkin

    Посоветуйте компонент

    масштабирование нужно? выделение мышью, подсветка при наведении курсора? это гис только маленький очень я бы начал реализацию собственными средствами, просто рисованием Хранение и отрисовка полигонов. если масштабирование как на картах, то и решение как на картах - несколько скейлов подложки и список полигонов для взаимодействия с мышью
    1 балл
  5. krapotkin

    Посоветуйте компонент

    рисунок приложите plz
    1 балл
  6. Для мобильных девайсов я выбрал-бы ЛистВью - лучше группированные по логических блокам данные в ЛВ чем разбитые по столбцам. Но опять-же - зависит от вашей ситуации
    1 балл
  7. Brovin Yaroslav

    TUITabControl

    Hello Juande, The first problem of it is a intercepting gestures/mouse events by TVertScrollBar, it's a reason why TUITabControl cannot receive events. The second problem is standard pan gesture doesn't define vertical and horizontal movement. It's a limitation of FireMonkey. So there are only one possible solution: You need catch mouse and pan gesture events in TVertScrollBar. Manually define is it a horizontal movement or not? If it's horizontal movement, that transfer it into TUITabControl by direct calling methods CMGesture or MouseXXX.
    1 балл
  8. Не только должна, но и отлично работает. Вот пример: function TFormMain.CreateUDPServer : Boolean; Var I : Integer; begin Result:=False; IdUDPServer:=TIdUDPServer.Create; IdUDPServer.BroadcastEnabled:=True; IdUDPServer.OnUDPRead:=IdUDPServerUDPRead; for I := Low(UDPPortArray) to High(UDPPortArray) do begin IdUDPServer.Bindings.Clear; with IdUDPServer.Bindings.Add do begin IP:='0.0.0.0'; Port:=UDPPortArray[I]; end; try IdUDPServer.Active:=True; except end; if IdUDPServer.Active then begin FActiveUDPPort:=IdUDPServer.Bindings.Items[0].Port; IPMACLocalPair.Port:=IdUDPServer.Bindings.Items[0].Port; Result:=True; Exit; end; end; FActiveUDPPort:=-1; end; procedure TFormMain.IdUDPServerUDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); Var S : String; begin if (IPMACLocalPair.IP.Equals(ABinding.PeerIP)) And (IPMACLocalPair.Port=ABinding.PeerPort) then exit; DateTimeToString(S, 'hh:nn:ss.zzz', Now); S:=S+' '+BytesToString(AData , IndyUTF8Encoding); S:=S+' | from '+ABinding.PeerIP+':'+ABinding.PeerPort.ToString; Memo.Lines.Insert(0,S); end; На UDPPortArray не обращайте внимание, это если порт занят, то используется другой (UDPPortArray : array [0..2] of Integer = (55771, 55772, 55773);). IdUDPServer.BroadcastEnabled:=True; тоже не нужно, если не собираетесь широковещать. Большинство функций работы с TIdBytes доступны в юните idGlobal, как например BytesToString(AData , IndyUTF8Encoding) в моем коде.
    1 балл
  9. В общем можно сделать, конечно, установку шрифта в инсталлере программы. И это будет оптимальным решением. Но можно обойтись и без него. Не буду расписывать детали, просто закину приложение и фрагменты кода. Думаю разберетесь. Естественно изменив на свои шрифты и т.п. Все нижеперечисленное - в файл проекта DPR, перед Application.Initialize; const CKey = '\Software\Microsoft\Windows NT\CurrentVersion\Fonts'; CFontFileName = 'spherelive.ttf'; CFontName = 'spherelive (TrueType)'; procedure ExecuteWait(const sProgramm: string; const sParams: string = ''; fHide: Boolean = false); var ShExecInfo: TShellExecuteInfo; begin FillChar(ShExecInfo, sizeof(ShExecInfo), 0); with ShExecInfo do begin cbSize := sizeof(ShExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpFile := PChar(sProgramm); lpParameters := PChar(sParams); lpVerb := 'open'; if (not fHide) then nShow := SW_SHOW else nShow := SW_HIDE end; try if (ShellExecuteEx(@ShExecInfo) and (ShExecInfo.hProcess <> 0)) then try WaitForSingleObject(ShExecInfo.hProcess, INFINITE) finally CloseHandle(ShExecInfo.hProcess); end; except On E : Exception do ShowMessage('font install Exception: ' + E.Message); end; end; if not IsFontRegistered(TPath.Combine(ExtractFilePath(ParamStr(0)), CFontFileName), CFontName) then if FileExists(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')) then ExecuteWait(TPath.Combine(ExtractFilePath(ParamStr(0)), 'RegFontC.exe')); Application.Initialize; Где будет лежать файл со шрифтом - это уже ваше дело. Можно его куда угодно поместить. Хоть в ресурсы, хоть файлом просто, хоть с инета скачать. P.S. Ну и конечно - это все именно под винду... RegFont.zip
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...