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

Alexander

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

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

  • Посещение

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

    2

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

  1. Brovin Yaroslav, могу только догадываться...

    Видимо там цикл по Value до max, поэтому чтоб надпись выводилась во время работы цикла. 

    Этот отрывок кода не даёт представления где возникает ошибка.

    kuldiegor, отладчиком проходили код? в какой строке ошибка?

  2. всё правильно, вы в обработчике компонента присваиваете курсор не компоненту, а форме. Хотите, чтоб и над компонентом был такой курсор, так и ему присвойте.

    Проверил у себя, данный код работает

    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Single);
    begin
      if Rectangle1.Cursor = crHourGlass then
        Form1.Cursor  :=   crSQLWait
      else
        Form1.Cursor  := crSizeNWSE;
    end;
    
    procedure TForm1.Rectangle1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Single);
    begin
      Form1.Cursor  :=   crSizeAll;
      Rectangle1.Cursor := crHourGlass;
    end;
    
    
  3. есть подозрение, что курсор перемещается не по форме, а по компонентам на форме, поэтому назначив курсор в событии формы это не будет являться изменением для всех компонент на форме. Нужно проверить срабатывает ли ваше назначение

  4. Математику в студию, по второй линии видно , есть подозрение что реализованный алгоритм неправильно работает.

     

    по коду.

    Добавить:

    line.Parent := Self;

     

    ещё совет:

      line                    := TLine.Create(Self);
      line.Parent             := Self;
      line.LineType           := TLineType.Top;
      line.Position.Point     := TPointF.Create(130, 130);
      line.RotationAngle      := 90;
      line.HitTest            := True;
      line.Width              := 100;
      line.Height             := 5;
      line.StrokeThickness    := 5;
    
    

    поясню: при диагональном расположении появляется мнимый прямоугольник, при котором если мышь будет находится в нём, то линия будет подсвечиваться. Хотя курсор мыши не будет находиться над линией.

  5. в Delphi 10 не смог произвести перевод отсканированных строк, не появляются Edit'ы для ввода перевода. Взял файл от рабочего проекта из XE8, в 10-ке подгрузились только английские слова, при этом так же не возможно добавить перевод. Это у меня одного так или ещё ни кто не проверял этот компонент?

  6. Идея была в следующем. В TImage не помещалась карта(состоящая из тайлов) большого размера. Поэтому был разработан алгоритм: на TScrollBox размещались TImage. Размер TImage(экран) чуть больше видимой области TScrollBox и кратный 256 пикселям(размер тайла). Затем экран заполнялся тайлами в соответствии с координатами. Таким образом, получалась большая карта и плавный скрол с инерцией

  7. Черновой вариант, использую в Windows. На сколько адаптировано к Android не знаю, не компилил
    
    
    procedure TMap.FullScreen(Image:TImage;Tile:TOSMTile);
    var
      I: Byte;
      j: Integer;
      BMPTile, BMPImage:TBitmap;
      rctIn, rctOut:TRectF;
      S:String;
    begin
      rctOUT:= TRectF.Create(0,0,255,255);
      BMPImage  := TBitmap.Create;
      BMPImage.Width    := Round(Image.Width);
      BMPImage.Height   := Round(Image.Height);
      BMPTile := TBitmap.Create;
      if not DirectoryExists(FPathTile+IntToStr(Tile.Zoom)) then
        ForceDirectories(FPathTile+IntToStr(Tile.Zoom));
      for I := 1 to FTileWidth do
        for j := 1 to FTileHeight do
        begin
          S:= FPathTile+format('%d\%d\%d.png',[Tile.Zoom,Tile.TileX+i-1,Tile.TileY+j-1]);
          while  Assigned(FHTTP) and not FileExists(S)  do
          begin
            if not DirectoryExists(FPathTile+IntToStr(Tile.Zoom)+'\'+IntToStr(Tile.TileX+i-1)) then
              ForceDirectories(FPathTile+IntToStr(Tile.Zoom)+'\'+IntToStr(Tile.TileX+i-1));
            LoadURLToFile(S, 'http://b.tile.openstreetmap.org/'+format('%d/%d/%d.png',[Tile.Zoom,Tile.TileX+i-1,Tile.TileY+j-1]), FHTTP);
          end;
          if FileExists(S) then
          begin
            rctIn := TRectF.Create(256*(i-1),256*(j-1),256*(i),256*(j));
            BMPTile.LoadFromFile(S);
            BMPImage.Canvas.BeginScene();
            BMPImage.Canvas.DrawBitmap(BMPTile,rctOut,rctIn,100,True);
    //        BMPImage.Canvas.Fill.Kind := TBrushKind.None;
    //        BMPImage.Canvas.DrawRect(TRectF.Create(0,0,FScreenWidth, FScreenHeight),0, 0, AllCorners, 100);
            BMPImage.Canvas.EndScene;
          end
    
        end;
        Image.Bitmap:= TBitmap.Create;
        Image.Bitmap.Clear($FFFFFFFF);
        Image.Bitmap.Assign(BMPImage);
    end;
    
    
  8. Тут подход должен быть более серьезный: Система координат, привязка к картинке. можно иметь очень точные координаты, но отображение на картинке будет не айс.... 

    а по алгоритму реализации

    1. разработать алгоритм пересчета координат
    2. загружаете в память картинку TBitmap
    3. для отображения карты с маршрутом на форме размещаете TImage
    4. на TBitmap отрисовать маршрут линиями,в соответствии с алгоритмом пересчета п.1;
    5. скопировать TBitmap в TImage
    6. точки наносить путем создания shape(окружность, квадрат и т.д. или TSelectionPoint). размещать их на TImage  в соответствии с алгоритмом пересчета п.1
    7. в соответствующие события у объектов точек присвоить обработчики нажатия на них

    как-то так... и не забываем про масштабирование, если необходимо.

     

    Может использовать Google Maps? если только задача простенькая

  9. Создавал динамически TImage. Проблем не возникало таких, правда позиционировал через position

    Если попробовать изначально задать большой Position. Y, а затем MostTop?

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