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

Лидеры

  1. Brovin Yaroslav

    Brovin Yaroslav

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


    • Баллы

      2

    • Постов

      2 124


  2. enatechno

    enatechno

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


    • Баллы

      2

    • Постов

      181


  3. Kitty

    Kitty

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


    • Баллы

      1

    • Постов

      792


  4. beklexx

    beklexx

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


    • Баллы

      1

    • Постов

      67


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

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

  1. Kitty

    BeaconFence

    Прошу прощения, что не по теме FM, а по теме RAD в общем. Просто на этом форуме можно получить вразумительный ответ от профессионалов. Вот есть такая технология у Embarcadero: http://www.embarcadero.com/ru/products/beaconfence Я смутно представляю, что это, поэтому вопрос такой: Можно ли контролировать с помощью этой технологии, например, продавцов на месте их работы в магазине, чтобы контролировать учет их рабочего времени? Фиксация - пришел на работу, фиксация - ушел с работы? Или эта технология совсем для других целей? Спасибо.
    1 балл
  2. beklexx

    GPS

    я ещё не тестил, но судя по коду предоставленному Русланом, как то так: procedure TFrmMain.LocationSensorLocationChanged(Sender: TObject; const [Ref] OldLocation, NewLocation: TLocationCoord2D); var Lat,Lon:String; lSensorType : String; begin lSensorType := GetLocationSensorType(LocationSensor); if lSensorType = 'Triangulation' then exit; Lat:=Format('%2.6f',[NewLocation.Latitude]); Lon:=Format('%2.6f',[NewLocation.Longitude]); // выполняем что то там end;
    1 балл
  3. Я предлагаю создать свой собственный класс для таких целей. Обработаем свойство Resize и всё, никаких проблем не будет. http://fire-monkey.ru/topic/2280-sobstvennyi-tlistboxitem-na-c/ тут я описал как создать собственный класс для ListBoxItem там же есть ссылка и для Delphi. Ниже приведен класс который я создал, только на C++. Посмотрите там обработчик события ApplyStyleLookup() и Resize(). И еще предлагаю вместо TLabel использовать TText. Если всё таки хотите своим путём тогда вычислите высоты с помощью TTextLayout, это делается так: var L : TTextLayout; begin L := TTextLayoutManager.DefaultTextLayout.Create; L.BeginUpdate; L.Text := FtextType.Text; {Вместо FTextType будет ваш Label} L.MaxSize := TPointF(FtextType.Width, 1000); L.Font := FTextType.Font; {} L.WordWrap := FTextType.WordWrap; L.HorizontalAlign := FTextType.HorzTextAlign; L.VerticalAlign := FTextType.VertTextAlign; L.EndUpdate; height := L.Height; end; Я не силён в Delphi, но думаю вы поймете. ListBoxItem.zip
    1 балл
  4. имхо: FMX - удачный инструмент. мы под даже под официанта все заточили. а клиенты бывают разные...
    1 балл
  5. Поддерживаю Zuby. Чем проще, тем стабильнее. Три параметра - номер стола и время, проверка занятости. P.S. устанавливал себе виджет "аналоговые часы", казалось бы.... Из 5-10 (со скачиванием 1кк) не один не показывал правильное время после "просыпания" Андроида. Остановился на виджете одного японца, скачиваний меньше 100к. Кунг-фу решает.
    1 балл
  6. На всякий случай, продублирую: function MakeScreenshotOfForm(const AForm: TForm): TBitmap; begin Assert(AForm <> nil); Result := TBitmap.Create(AForm.Width, AForm.Height); AForm.PaintTo(Result.Canvas); end; procedure TForm4.Button1Click(Sender: TObject); var Bitmap: TBitmap; begin Bitmap := MakeScreenshotOfForm(Self); try Image1.Bitmap.Assign(Bitmap); finally Bitmap.Free; end; end; Еще есть статья [XE7] Создание PrintScreen'ов полных и части экранов, в ней рассказывается, как сделать скриншоты в том числе и чужих окон, правда только под Windows
    1 балл
  7. Добрый день, Могу предложить в качестве базового способ получения скриншота всего рабочего стола. 1. Делаем скриншота рабочего стола по хендлу: function MakeWindowScreenShot(const AWindowHandle: HWND): TBitmap; var VCLBitmap: TBitmap; WindowRect: TRect; begin VCLBitmap := TBitmap.Create; try WindowRect := Rect(0, 0, Screen.DesktopWidth, Screen.DesktopHeight); VCLBitmap.Width := WindowRect.Width; VCLBitmap.Height := WindowRect.Height; BitBlt(VCLBitmap.Canvas.Handle, WindowRect.Left, WindowRect.Top, WindowRect.Width, WindowRect.Height, AWindowHandle, 0, 0, SRCCOPY); except VCLBitmap := nil; end; Result := VCLBitmap; end; 2. Далее получаем хендл рабочего стола, делаем скриншот и сохраняем скриншот в файл: procedure MakeScreenShotOfDesktop(const AFileName: string); var DCDesk: HDC; VCLBitmap: TBitmap; DesktopWindow: HWND; begin DesktopWindow := GetDesktopWindow; DCDesk := GetWindowDC(DesktopWindow); try VCLBitmap := MakeWindowScreenShot(DCDesk); try if VCLBitmap <> nil then VCLBitmap.SaveToFile(AFileName); finally VCLBitmap.Free; end; finally ReleaseDC(DesktopWindow, DCDesk); end; end; Соответственно далее, можно от этого отталкиваться и делать копирование только требуемой части рабочего стола (регион, окно). Для этого нужно в строке: BitBlt(VCLBitmap.Canvas.Handle, WindowRect.Left, WindowRect.Top, WindowRect.Width, WindowRect.Height, AWindowHandle, 0, 0, SRCCOPY); указывать нужную область копирования. Либо, продвинутый вариант. Это для конкретного окна находить хендл и делает скриншот только одного окна.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...