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

Александр Лукьянов (Filament Extruder 1.75)

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

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

  • Посещение

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

    1

Сообщения, опубликованные Александр Лукьянов (Filament Extruder 1.75)

  1. кое как определил сбойный участок. спасибо ребята. правильным порядком оказалось удаление кода/компонентов -когда совсем не понятно что происходит.

    код сначала выполняет тут (до create)

    procedure TForm1.MyResize(Sender: TObject);
    begin
     if TControl(Sender).Width < 120 then
        TControl(Sender).Width := 120;
      if TControl(Sender).Height < 120 then
        TControl(Sender).Height := 120;
    
      setWidhtHight(TControl(Sender).Width, TControl(Sender).Height);
    end;

     

  2. да, есть, но контрольная точка там не срабатывает. ошибка раньше возникает

    
    procedure TForm1.FormCreate(Sender: TObject);
    var
    st:TstringList;
    begin
    
      StringGrid1.OnDblClick := StringGrid1myDblClick;
      StringGrid2.OnDblClick := StringGrid2myDblClick;
    
    
      Form1.Profiles.SettingStream := TObjectList<TControl>.Create;
      Form1.Profiles.TypeName := TstringList.Create;
      Form1.Profiles.ActionList := TstringList.Create;
      Form1.Profiles.PropertList := TstringList.Create;
    
      Form1.EhomeSmartDir := GetEhomeSmartDir;
      // получаем директорию профилей
      // путь хранения C:\Users\Public\Documents\Fuzy for Windows
    
      Form1.SetupDir := System.SysUtils.ExtractFilePath(paramStr(0));
      // путь установки программы
    

     

  3. Начал удалять компоненты и объекты с формы. ошибка уходит если с права удалить компонент панель у которой нет ни одного события, но есть ссылки на нее подобного рода.

    может быть какое то свойство исчезло или поменялось у компонента Panel

     

     

     

     

  4. unit Unit1;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes,
      System.Variants, Winapi.WinSock, Winapi.ShellAPI,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
      FMX.Controls.Presentation, FMX.StdCtrls, FMX.Media, FMX.Menus, FMX.ListBox,
      FMX.Objects, FMX.ExtCtrls,
      FMX.Layouts, FMX.Memo, Winapi.Windows, FMX.Platform, System.ImageList,
      FMX.ImgList, FMX.ListView.Types, FMX.ListView, FMX.Edit, FMX.Ani, registry,
      ShlObj, System.Generics.Collections, FMX.Presentation.Style,
      System.Rtti, FMX.Grid, Winapi.Tlhelp32, FMX.Grid.Style, FMX.ScrollBox,IdHTTP;
    
    type
      all = record
        SettingStream: TObjectList<TControl>; // сам объект
        TypeName: TstringList;
        // тип объекта для создания (TButton, Timage и так далее)
        ActionList: TstringList; // закрепленные за объектом действия
        PropertList: TstringList; // дополнительные свойства объекта
      end;
    
    type
      objChange = record
        Indx: integer; // индекс объекта относительно списка
        Prorep: string; // тип объекта для создания (TButton, Timage и так далее)
        Names: string; // имя компонента
      end;
    ..................
          
        procedure ControlClick(Sender: TObject);
        procedure ControlMouseMoveOnlyResize(Sender: TObject; Shift: TShiftState;
          X, Y: Single);
    
        procedure ControlMouseMoveNoResize(Sender: TObject; Shift: TShiftState;
          X, Y: Single);
    
        procedure ControlMouseMove(Sender: TObject; Shift: TShiftState;
          X, Y: Single);
        procedure ControlMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Single);
        procedure ControlMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Single);
    
        procedure MyDragDrop(Sender: TObject; const Data: TDragObject;
          const Point: TPointF);
        procedure MyDragOver(Sender: TObject; const Data: TDragObject;
          const Point: TPointF; var Operation: TDragOperation);
        procedure MyResize(Sender: TObject);
        ......................
          
          
    procedure TForm1.ControlMouseMoveOnlyResize(Sender: TObject; Shift: TShiftState;
      X, Y: Single);
    const
      minWidth = 20;
      minHeight = 20;
    var
      newPos: TPoint;
      frmPoint: TPointF;
    
      h: integer;
    begin
    
      Form1.ComponentLastView := TControl(Sender).ComponentIndex;
      // последний компонент над котором была мышь
    
      if inReposition then
      begin
        // if  ((Sender) is Tbutton) or ((Sender) is TLabel) or ((Sender) is TPanel) then     begin
    
        GetCursorPos(newPos);
    
        Form1.ChangeFormIndex := true;
        // были изменения в форме
    
        if ssShift in Shift then
        begin // resize
    
          TControl(Sender).Cursor := crSizeNWSE;
    
          if X > minWidth then
            (Sender as TControl).Width := X;
          if Y > minHeight then
            (Sender as TControl).Height := Y;
    
          // обводку даем
          if Form1.Profiles.SettingStream.Count > 0 then
          begin
            Form1.Rectangle1.Parent := TControl(Sender).Parent;
            Form1.Rectangle1.Position.X := TControl(Sender).Position.X - 3;
            Form1.Rectangle1.Position.Y := TControl(Sender).Position.Y - 3;
            Form1.Rectangle1.Width := TControl(Sender).Width + 6;
            Form1.Rectangle1.Height := TControl(Sender).Height + 6;
    
            // угол поворота для обводки
            if (Sender is TImage) then
            begin
              Form1.Rectangle1.RotationAngle := TImage(Sender).RotationAngle;
            end;
            if (Sender is TLabel) then
            begin
              Form1.Rectangle1.RotationAngle := TLabel(Sender).RotationAngle;
            end;
            if (Sender is TButton) then
            begin
              Form1.Rectangle1.RotationAngle := TButton(Sender).RotationAngle;
            end;
            if (Sender is TSwitch) then
            begin
              Form1.Rectangle1.RotationAngle := TSwitch(Sender).RotationAngle;
            end;
            if (Sender is TTrackBar) then
            begin
              Form1.Rectangle1.RotationAngle := TTrackBar(Sender).RotationAngle;
            end;
            if (Sender is TPanel) then
            begin
              Form1.Rectangle1.RotationAngle := TPanel(Sender).RotationAngle;
            end;
            // угол поворота для обводки
    
            Form1.Rectangle1.BringToFront;
            Form1.Rectangle1.BringToFront;
            Form1.Rectangle1.BringToFront;
            Form1.Rectangle1.BringToFront;
    
          end;
          // обводку даем
    
          ViewObjectInspector(TControl(Sender).ComponentIndex);
    
        end;
    
      end;
    end; (* ControlMouseMoveOnlyResize *)
    
    procedure TForm1.ControlMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    begin
    
    
    
      if inReposition then
      begin
    
    
        TControl(Sender).Cursor := crDefault;
    
        (Sender as TControl).Root.Captured := nil;
    
        inReposition := false;
    
      end;
    end;
    ..................................
          

     

     

    честно сказать теряюсь какую часть выложить сюда и как отловить вообще где ухожу в ошибку.
    задача изначально сделать приложение под windows и работать оно будет только в windows, но что бы было именно с использованием firemonkey.

     

    image.thumb.png.eeba1867ececb45968e1bbf7397f79b5.png

     

     

  5. Я в понятиях не спец но я использовал crossvcl-trial которая позволила создавать окна на Linux Desktop а sgc  компоненты под Linux могут быть использованы.Таким образом на первом скриншоте у меня получилась рабочая связка. работает хорошо. но меня не интересует GUI совершенно.

    Скриншот консольного приложения показывает момент авторизации пользователя на MQTT сервере, т.е. он как unknown  и почему то GUID не формирует сам компонент (хотя ранее формировал). выше можно увидеть строчки с нормальным соединением выполненное другим клиентом (иное ПО)

    Отладчик работает без ошибок. консольное приложение может быть на Windows и на Lunix , если я переключаю на Windows то происходит тоже самое. те же самые логи на сервере. т.е. не под Windows Console не под Linux Console не удается нормально подключиться к серверу. как дальше попытаться разобраться? методика?

    мне кажется если исправить эту ситуацию в Windows Console то и в Linux Console будет работать.

     

    моя конечная цель, однако тут использован другой компонент.

     

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