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

переход на tokio


fsdb

Вопрос

Добрый день. подскажите пожалуйста. Делаю приложение в firemonkey и раньше без проблем запускал приложение на Berlin, утсновкил Tokio и получаю сразу после компиляции. в приложении в основном использую StringGrid1, более ничего.

как мне отловить - в чем проблема именно? я вышел за Range, каким то образом и не могу понять как и где. пытаюсь отловить дебагером но до него дело не доходит. сразу после компиляции эта ошибка.

image.png.a0589a67ca9c5e4241311450805fb903.png

 

 

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
type
  all = record
    SettingStream: TObjectList<TControl>; // сам объект
    TypeName: TstringList;
    // тип объекта для создания (TButton, Timage и так далее)
    ActionList: TstringList; // закрепленные за объектом действия
    PropertList: TstringList; // дополнительные свойства объекта
  end;

Возможно как то связано с TObjectList<TControl>, исключение всплывает в System.Generics.Collections

Ссылка на комментарий
  • 0
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

 

 

Изменено пользователем Александр Лукьянов (Filament Extruder 1.75)
Ссылка на комментарий
  • 0

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

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

 

 

 

 

Изменено пользователем Александр Лукьянов (Filament Extruder 1.75)
Ссылка на комментарий
  • 0
6 минут назад, Александр Лукьянов (Filament Extruder 1.75) сказал:

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

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


    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;
  Form1.Rectangle1.BringToFront;
  Sender := Form1.Rectangle1.Parent;
  Form1.Rectangle1.Parent := nil;
  // убираем с контейнера
    Form1.Rectangle1.Parent :=
      TControl(Form1.Profiles.SettingStream.Items[num]).Parent;

 

 

 

 

А есть где нибудь до этого TObjectList<TControl>.Create?

Ссылка на комментарий
  • 0

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


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));
  // путь установки программы

 

Ссылка на комментарий
  • 0

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

код сначала выполняет тут (до 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;

 

Изменено пользователем Александр Лукьянов (Filament Extruder 1.75)
Ссылка на комментарий
  • 0

на сколько я понял у моей рабочей области (реальный компонент Panel4) установлено событие MyResize и оно вызывается раньше чем Form.create где прописано что объект нужно создать (сама ошибка возникала в setWidhtHight)

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...