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

enatechno

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

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

  • Посещение

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

    26

Ответы сообщества

  1. Пост enatechno - сообщение в Ширина хедеров после OnResize не обновляется был отмечен как ответ   
    Не помню точно, но вроде на дельфи так решается:
    Grid1.BeginUpdate; ... //изменение ширины колонок Grid1.EndUpdate;
  2. Пост enatechno - сообщение в Запуск Google Play из своего приложения был отмечен как ответ   
    Если не ошибаюсь, TAndroidHelper появился в Androidapi.Helpers позже XE7. До его появления использовался такой способ открытия URL:
     
    function OpenURL(const URL: string; const DisplayError: Boolean = False): Boolean; var Intent: JIntent; begin Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, TJnet_Uri.JavaClass.parse(StringToJString(TIdURI.URLEncode(URL)))); try SharedActivity.startActivity(Intent); exit(true); except on e: Exception do begin if DisplayError then ShowMessage('Error: ' + e.Message); exit(false); end; end; end;  
  3. Пост enatechno - сообщение в OnTap не меняет положение курсора был отмечен как ответ   
    uses System.Threading; //.... procedure TForm1.Memo1Tap(Sender: TObject; const [Ref] Point: TPointF); begin TTask.Run(procedure begin TThread.Synchronize(nil, procedure begin ShowMessage(IntToStr(Memo1.SelStart)); end); end); end;  
  4. Пост enatechno - сообщение в [Android] Рисовать пальцем был отмечен как ответ   
    У TMS есть готовое решение: TTMSFMXSignatureCapture

    Вот еще видео можно глянуть:  
    Tutorial: Finger Writer with FireMonkey (Delphi DX10.1 Berlin) on Win10, OSX, iOS
    Tutorial: Signatur Capture in Firemonkey XE5 (Delphi XE5) on Win, iOS and Android
  5. Пост enatechno - сообщение в Динамическое создание компонентов был отмечен как ответ   
    procedure TForm1.FormCreate(Sender: TObject); var i: integer; aRectangle: TRectangle; aLabel: TLabel; aButton: TButton; begin VertScrollBox1.BeginUpdate; try for i := 1 to 30 do begin aRectangle := TRectangle.Create(VertScrollBox1); aRectangle.Parent := VertScrollBox1; aRectangle.Align := TAlignLayout.Top; aRectangle.Height := 60; aRectangle.Margins.Left := 10; aRectangle.Margins.Top := 15; aRectangle.Margins.Right := 15; aRectangle.TagString := 'Rectangle' + i.ToString; aLabel := TLabel.Create(VertScrollBox1); aLabel.Parent := aRectangle; aLabel.Align := TAlignLayout.Client; aLabel.Text := 'Label' + i.ToString; aLabel.Margins.Left := 10; aLabel.TagString := 'Label' + i.ToString; aButton := TButton.Create(VertScrollBox1); aButton.Parent := aRectangle; aButton.Align := TAlignLayout.Right; aButton.Text := 'Button' + i.ToString; aButton.TagString := 'Button' + i.ToString; aButton.Margins.Top := 5; aButton.Margins.Bottom := 5; aButton.Margins.Right := 10; end; finally VertScrollBox1.EndUpdate; end; end;  
  6. Пост enatechno - сообщение в TListBox аналог PullToRefresh был отмечен как ответ   
  7. Пост enatechno - сообщение в Вставка стиля был отмечен как ответ   
    Я так понимаю, Вы имели ввиду FindAndCloneStyleResource? Этот метод не возвращает копию стиля. Он возвращает копию объекта(элемента) стиля.
    Например,  если Вы хотите напрямую изменить элемент стиля (например цвет фона кнопки), то делаете:
     
    AObject := Button1.FindStyleResource('background'); if (AObject is TRectangle) then TRectangle(AObject).Fill.Color := TAlphaColorRec.Aqua; И Button1 изменит цвет.
    Но, если после этого сделать Layout1.AddObject(AObject); то кнопка Button1  не будет больше иметь элемент 'background', родителем этого объекта станет Layout1. 

     Что касается
    AObject := Button1.FindStyleResource('background', True); if AObject <> nil then Layout1.AddObject(AObject); или
    if Button1.FindAndCloneStyleResource('background', AObject) then Layout1.AddObject(AObject); то вы просто создаете новый объект AObject типа TRectangle со всеми свойствами как у стилевого элемента 'background', за исключением StyleName (у вновь созданного AObject будет  StyleName = ''). В нашем примере этот новый объект (TRectangle) будет помещен на Layout1. При этом 'background' кнопки не изменится.
     
  8. Пост enatechno - сообщение в [TPopupMenu] Можно ли стилизовать background у TPopupMenu? был отмечен как ответ   
    Можно. Стиль называется menuviewstyle.
     
  9. Пост enatechno - сообщение в OnCreate для фрейма был отмечен как ответ   
    Да. 
    constructor Create(AOwner: TComponent); override;  
  10. Пост enatechno - сообщение в Запуск компилированного приложения. был отмечен как ответ   
    Создал 2 тестовых проекта (один VCL, другой FMX). В обоих только форма с кнопкой.
    Компилировал из 10 Seattle и 10 Berlin (конфигурация Debug).
    Запускал на win 7 и 10.
    Задержки в 1-2 сек не наблюдал. На глаз оба проекта запускаются с одинаковой скоростью.
    Конфигурация компьютера аналогична Вашей.
    https://www.youtube.com/watch?v=5q8ZKiYEWko
  11. Пост enatechno - сообщение в Как сохранить пропорции у ScaledLayout ? был отмечен как ответ   
    Если хотите пропорционального изменять размеры  ScaledLayout:
    1). Используйте для него выравнивание по одному краю (например: Top, Left ... );
    2). При запуске программы фиксируйте TScaledLayout.OriginalWidth и TScaledLayout.OriginalHeight;
    3). Т.к. в зависимости от выравнивания у Вас будет изменятся один из параметров (при выравнивании Top - Width, при Left - Height), то будьте готовы в OnResize изменять пропорционально второй параметр. Например так:
     
    aRatio := ScaledLayout1.Width / ScaledLayout1.OriginalWidth; ScaledLayout1.Height := ScaledLayout1.OriginalHeight * aRatio;  
    tstScaledLayout.zip
  12. Пост enatechno - сообщение в Пробежать по компонентам на Layout был отмечен как ответ   
    Родителем (Parent) является Layout. А Owner у Ваших контролов - форма. ComponentCount считается для Owner.
    Создавая кнопки в runtime можете задать:
    aButton := TButton.Create(Layout1); Layout1.Add(aButton); и тогда Layout1.ComponentCount уже не будет равно 0.

    Для перебора в Parent используйте ChildrenCount
     
    for i:=0 to Layout1.ChildrenCount-1 do begin if (Layout1.Children[i] is TButton) or (Layout1.Children[i] is TLabel) then if (TControl(Layout1.Children[i]).Visible) then TControl(Layout1.Children[i]).Width:=50; end;  
  13. Пост enatechno - сообщение в Создать в рантайме перетаскиваемый компонент был отмечен как ответ   
    procedure TForm1.Label7Click(Sender: TObject); var Phase: TCalloutRectangle; begin Phase := crtPhase.Clone(ScrollBox1) as TCalloutRectangle; Phase.OnMouseDown := crtPhaseMouseDown; Phase.OnMouseMove := crtPhaseMouseMove; Phase.Parent := ScrollBox1; Phase.Position.X := crtPhase.Position.X + 10; Phase.Position.Y := crtPhase.Position.Y + 10; Phase.Visible := true; end; Замените у себя эту процедуру и удалите Button1 (как я и сказал выше, TButton не является TShape - поэтому и ошибка).
  14. Пост enatechno - сообщение в Слишком большой размер приложения. был отмечен как ответ   
    Возможно. Дополнительный файл .so отличается от Вашего тем, что пробел заменен на _. Хотел проверить, но Delphi не дает мне создать проект с пробелом в имени.
  15. Пост enatechno - сообщение в Cancel в InputQuery был отмечен как ответ   
    и не только...
    What's New - Berlin:
    Simplified Dialog API
    Several procedures and functions to show dialog boxes are now deprecated, and have been replaced by the
    procedures and functions of the new IFMXDialogServiceAsync and IFMXDialogServiceSync platform services
    that provide support for synchronous and asynchronous dialog boxes, respectively.
    The following table summarizes the API changes:
    Deprecated Members
    New Members 
    FMX.Dialogs.ShowMessage*
    FMX.Dialogs.ShowMessageFmt*
    FMX.Dialogs.ShowMessagePos
    ShowMessageAsync
    ShowMessageSync
     
    FMX.Dialogs.MessageDlg
    FMX.Dialogs.MessageDlgPos
    FMX.Dialogs.MessageDlgPosHelp
    FMX.Platform.IFMXDialogService.MessageDialog 
    MessageDialogAsync
    MessageDialogSync
     
     
    FMX.Dialogs.InputBox
    FMX.Dialogs.InputQuery
    FMX.Platform.IFMXDialogService.InputQuery 
    InputQueryAsync
    InputQuerySync
     

    * ShowMessage and ShowMessageFmt are not really deprecated, but you may want to use ShowMessageAsync
    or ShowMessageSync instead nonetheless.

    Two new helper classes have been created as well: TDialogServiceAsync and TDialogServiceSync. These helper
    classes provide class methods and functions that allow you to call the new procedures and functions for dialog
    boxes without the need of an instance of the corresponding dialog box platform service.
    Other FireMonkey
  16. Пост enatechno - сообщение в [DX10] Drag-and-Drop Пример был отмечен как ответ   
    https://www.youtube.com/watch?v=ta_N6DSi0Xg
    с 22 минуты
  17. Пост enatechno - сообщение в Выгрузка/Загрузка картинки в Blob поле SQLLite под Android/iOS был отмечен как ответ   
    когда-то делал так:
     
    aMStream := TMemoryStream.Create; // считываем в aMStream, потом записываем в параметр пишущего запроса: {$IF CompilerVersion >= 28} aQuery.Params[i].SetStream(aMStream, ftBlob, true); {$ELSE} aQuery.Params[i].LoadFromStream(aMStream, ftBlob, 0); {$ENDIF}
  18. Пост enatechno - сообщение в Ширина хедеров после OnResize не обновляется был отмечен как ответ   
    Не помню точно, но вроде на дельфи так решается:
    Grid1.BeginUpdate; ... //изменение ширины колонок Grid1.EndUpdate;
  19. Пост enatechno - сообщение в PullRefresh был отмечен как ответ   
    http://fire-monkey.ru/topic/295-obnovlenie-spiskov-tlistbox-tlistview-kak-v-populiarnykh-prilozh/
    http://fire-monkey.ru/topic/217-obnovlenie-spiska-listbox-kak-v-prilozhenii-vkontakte/
  20. Пост enatechno - сообщение в Поворот стрелки как на часах был отмечен как ответ   
    Задан RotationCenter?
    В Вашем случае до выполнения RotationAngle нужно опустить по Y центр контрола, отображающего стрелку. Например так:
    В run-time:
    [контрол со стрелкой].RotationCenter.Y := 0.8;
    или в design-time:

     
    Значение 0.8 вычислено мной ориентировочно.
     
  21. Пост enatechno - сообщение в [TImage] Как сделать увеличение\уменьшение TImage при помощи двух пальцев? был отмечен как ответ   
    Есть в примерах.  
    Samples\Object Pascal\Mobile Snippets\InteractiveGestures\ImageZoom\ImageZoom.dproj
    или тут
  22. Пост enatechno - сообщение в TStringGrid - объединение ячеек был отмечен как ответ   
    Я бы в нулевой (невидимой) колонке хранил бы признак заголовка. И обрабатывал бы это значение в событии TStringGrid.OnDrawColumnCell.
    Вот набросал пример (заголовок остается заголовком, даже если менять колонки местами):
     

     
    testStringGrid.zip
  23. Пост enatechno - сообщение в Автомасштабирование компонентов при измененнии масштаба формы был отмечен как ответ   
    Поместите свою "кучу" на компонент TScaledLayout и задайте для последнего выравнивание (Align) Client (или Contents, или Fit, или Scale...)
×
×
  • Создать...