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

Alexey Lovchikov

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

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

  • Посещение

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

    6

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

  1. Здравствуйте,

     

    Прочитав тему http://fire-monkey.ru/topic/432-sovety-po-sozdaniiu-mobilnogo-prilozheniia-master-detail/?p=1638 решил переделать свое приложение с использованием Frame, подскажите правильно ли я его делаю

     

    Primer.zip

  2. Пример по использованию JSON

    uses 
       System.IOUtils, System.JSON;
    
    procedure TForm1.btLoadClick(Sender: TObject);
    var
      AOptions: TJSONObject;
      AGroup: TJSONObject;
      AParam: TJSONValue;
    begin
      if FileExists(FFileName) then
      begin
        AOptions := TJSONObject(TJSONObject.ParseJSONValue(TFile.ReadAllText(FFileName)));
    
        AGroup := TJSONObject(AOptions.GetValue('group1'));
        if AGroup <> nil then
        begin
          AParam := AGroup.GetValue('edit1');
          if AParam <> nil then
            Edit1.Text := TJSONString(AParam).Value;
    
          AParam := AGroup.GetValue('edit2');
          if AParam <> nil then
            Edit2.Text := TJSONNumber(AParam).Value;
        end;
    
        AGroup := TJSONObject(AOptions.GetValue('group2'));
        if AGroup <> nil then
        begin
          AParam := AGroup.GetValue('checkbox1');
          if AParam <> nil then
            CheckBox1.IsChecked := AParam is TJSONTrue;
        end;
      end;
    end;
    
    procedure TForm1.btSaveClick(Sender: TObject);
    var
      AOptions: TJSONObject;
      AGroup: TJSONObject;
      AParam: TJSONValue;
      APair: TJSONPair;
    begin
      AOptions := TJSONObject.Create;
    
      AGroup := TJSONObject.Create;
      AGroup.AddPair('edit1', Edit1.Text);
      if Edit2.Text.Trim <> '' then
        AGroup.AddPair('edit2', TJSONNumber.Create(Edit2.Text));
    
      AOptions.AddPair('group1', AGroup);
    
      AGroup := TJSONObject.Create;
      if CheckBox1.IsChecked then
        AGroup.AddPair('checkbox1', TJSONTrue.Create)
      else
        AGroup.AddPair('checkbox1', TJSONFalse.Create);
    
      AOptions.AddPair('group2', AGroup);
    
      TFile.WriteAllText(FFileName, AOptions.ToString);
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      {$IFDEF ANDROID}
      //Если файл во внутреннем накопителе то GetDocumentsPath
      //Если файл на внешнем накопителе то GetSharedDocumentsPath
      FFileName := TPath.Combine(TPath.GetSharedDocumentsPath, 'Options.json');
      {$ENDIF}
    
      {$IFDEF MSWINDOWS}
      FFileName := ExtractFilePath(ParamStr(0)) + 'Options.json';
      {$ENDIF}
    end;
    

    Также почитай http://www.webdelphi.ru/2011/10/rabota-s-json-v-delphi-2010-xe2/

    Primer.zip

  3. Всем привет,

     

    Появилась проблема при работе с TWebBrowser и TTabControl

     

    Мое приложение состоит из TTabControl с несколькими TTabItem. На одном из табов размещен TWebBrowser который в дальнейшем должен будет отображать html станицу. Переключение между табами делаю через класс TChangeTabAction. Проблема появляется при переключении с любого таб на таб с TWebBrowser и обратно, браузер начинает перекрывать все контролы. Если телефон перевернуть то браузер исчезает. Если кто знает как можно обойти данную проблему подскажите. Может каким нибудь способом заставить перерисовываться окно  

     

    Среда: Embarcadero® Delphi XE7 Version 21.0.17707.5020 

     

    Во вложении пример программы

    Primer.zip

  4. Хранение информации о настройках в Ini файле на вой взгляд это прошлый век. Используй структуру XML или JSON.

     

    Чтоб использовать JSON подключи стандартные модули Data.DBXJSON, Data.DBXJSONCommon, Data.DBXJSONReflect в свой проект и используй объекты TJSONobject, TJSONArray и другие. 

  5. Попробуй использовать стандартные жесты TGestureManager плюс анимацию TFloatAnimation

     

    Пример 

    type
      TfmMain = class(TForm)
        MenuHide: TFloatAnimation;
        MenuShow: TFloatAnimation;
        gmGesture: TGestureManager;
        pnMenu: TPanel;
        btHide: TButton;
        Rectangle1: TRectangle;
        Label1: TLabel;
        procedure btHideClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo;
          var Handled: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      fmMain: TfmMain;
    
    implementation
    
    {$R *.fmx}
    
    procedure TfmMain.btHideClick(Sender: TObject);
    begin
      MenuShow.Stop;
      MenuHide.Start;
    end;
    
    procedure TfmMain.FormCreate(Sender: TObject);
    begin
      MenuHide.StartValue := pnMenu.Position.Y ;
      MenuHide.StopValue := Self.ClientHeight;
    
      MenuShow.StartValue := MenuHide.StopValue;
      MenuShow.StopValue := MenuHide.StartValue;
    end;
    
    procedure TfmMain.FormGesture(Sender: TObject;
      const EventInfo: TGestureEventInfo; var Handled: Boolean);
    begin
      if EventInfo.GestureID = sgiUp then
      begin
        MenuHide.Stop;
        MenuShow.Start;
      end
      else
        if EventInfo.GestureID = sgiDown then
        begin
          MenuShow.Stop;
          MenuHide.Start;
        end;
    end;
    

     

    Во вложении пример программы 

    Primer.zip

  6. Добрый день!

     

    Как я понимаю компонент TEdit в XE7 был переписан и класс TCustomEdit изменил предка на TPresentedControl. Теперь все мои компоненты пропали. В чем может быть проблема. Проверить можно простым созданием пустого класса наследника от TEdit

    type
      TMyEdit = class(TEdit) 
      end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    var 
      AEdit: TMyEdit;
    begin
      AEdit := TMyEdit.Create(Self);
      AEdit.Parent := Self;
      AEdit.Position.X := 10;
      AEdit.Position.Y := 10;
      AEdit.Visible := True;
    end;
    
×
×
  • Создать...