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

Slym

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

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

  • Посещение

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

    39

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

  1. 20 часов назад, OnePeople сказал:

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

    Так же делал все это в потоке с использованием floatanimation, но прирост не большой получился.

    А зачем постоянно bringtofront? одного раза не достаточно? там реально медленно...
    я полагаю нужна глубина сцены?
    многие ее делают слоями: дальний фон (горы), ближний фон (лес), сцена (персы), и воздух (падающий снег)
    кидаем 4 лейаута и на них распределяем спрайты
     

  2. В 23.02.2024 в 18:37, Саша сказал:

    Вот этот фрагмент.

    Не красиво!
    Красиво:

    procedure TForm1.Button5Click(Sender: TObject);
    const s='18:C0:4D:7E:E6:B2'; // MAC адрес сетевой платы
    var
      Data:string;
      Bytes:TBytes;
      IdUDPClient1:TIdUDPClient;
    begin
      Data:='';
      for var bt in s.Split([':']) do
        Data:=Data+chr(StrToInt('$'+bt));
      for var i:=0 to 3 do
        Data:=Data+Data;
      Data:=StringOfChar(#$FF,6)+Data;
      Bytes:=TEncoding.ANSI.GetBytes(Data);
      IdUDPClient1:=TIdUDPClient.Create(nil);
      try
        IdUDPClient1.SendBuffer('40.240.8.50',9, TIdBytes(Bytes));
      finally
        IdUDPClient1.Free;
      end;
    end;

     

  3. 23 часа назад, delcpy сказал:

     

    Сделайте задержку в скетче на секунду (delay(1000))

    Плохая идея организовывать протокол на задержках (delay) в системах с вытесняющей многозадачностью.
    Только разделители (csv, json, PChar(#0)) или префиксы длины (http Content-Length) или жесткий фиксированный размер (packed record).
    Человеsleep(1000)ко читаеsleep(1000)мый теsleep(1000)кст - каково тебе И и ии ии ииилон  мм мма мммааа... 

  4. Проблема в том что ты убиваешь вкладку на которой кнопка выполняет свой клик... т.е. кнопка убивает себя из под себя...
    На до убийство сделегировать, например основному потоку через TThread.ForceQueue

     

    procedure TfrMain.TabClose(Sender: TObject);
    var
      activetab : Integer;
    begin
      activetab:=((Sender as TControl).Parent as TControl).Parent.Index;
      Thread.ForceQueue(nil, procedure
        begin 
    	  TabControl1.Delete(activetab);
        end);
    end;
    

     

  5. Я вот давно уже делаю все на фреймах... Одно главное окно и кучка фреймов в рамках этого окна, даже ShowMessage - кастомный фрейм, даже некоторые TabItemы с фреймом. есть моменты где глубина вложенности фреймов доходит 4 (Окно, фрейм, вкладки с фреймами, под вкладки :), фрейм с диалогом)
    Анимированную прозрачность фрейма - легко: там есть Opacity, TAnimator.AnimateFloat(Frame,'Opacity',1,1); Окна чуть сложнее...
    Масштаб - TScaledLayout

  6. procedure TForm1.Button1Click(Sender: TObject);
    var
      Form2:TForm2;
      h,w,l,t:integer;
    begin
      Form2:=TForm2.Create(nil);
      try
        h:=Form2.Height;
        w:=Form2.Width;
        l:=Form2.Left;
        t:=Form2.Top;
    
        Form2.Height:=1;
        Form2.Width:=1;
        Form2.Left:=l+ (w div 2);
        Form2.Top:=t+ (h div 2);
    
        TAnimator.AnimateInt(Form2,'Height',h,1);
        TAnimator.AnimateInt(Form2,'Width',w,1);
        TAnimator.AnimateInt(Form2,'Left',l,1);
        TAnimator.AnimateInt(Form2,'Top',t,1);
        Form2.ShowModal;
      finally
        Form2.Free;
      end;
    end;

    "В лоб" как-то так :)

  7. заметь - ругается на сетевое подключение... либо порт либо ip неправильно указаны...
    мой uses
      FireDAC.Comp.Client, FireDAC.Comp.DataSet,
      FireDAC.Stan.Def, FireDAC.Stan.Param, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.Stan.Consts, FireDAC.Stan.Async,
      FireDAC.DApt,
      FireDAC.Phys, FireDAC.Phys.Intf, FireDAC.Phys.FB, FireDAC.Phys.FBDef, FireDAC.Phys.IBBase;
     

        Params.Values['S_FD_ConnParam_IB_Protocol']:='TCPIP';
        Params.Values['S_FD_ConnParam_Common_Server']:='*********';
        Params.Values['S_FD_ConnParam_Common_Port']:='***';
    константы без кавычек ключ в uses FireDAC.Stan.Consts
    
  8. const DriverName='FB';
    ...
    FConnection.DriverName:=DriverName;
    with FConnection do
    begin
      Params.Database:= 'Database';
      Params.UserName := 'UserName';
      Params.Password := 'Password';
      Params.Values[S_FD_ConnParam_IB_Protocol]:='TCPIP';
      Params.Values[S_FD_ConnParam_Common_Server]:=Server;
      Params.Values[S_FD_ConnParam_Common_Port]:=Port;
      Params.Values[S_FD_ConnParam_IB_SQLDialect]:='3';
      Params.Values[S_FD_ConnParam_IB_RoleName]:=Role;
      Params.Values[S_FD_ConnParam_Common_CharacterSet]:=CharacterSet;
    end;
    FConnection.Connected:=true;

     

  9. const DriverName='FB';
    var DriverLink:TFDPhysDriverLink;
    begin
          FDPhysManager().Open;
          DriverLink:=FDPhysManagerObj.FindDriverLink(DriverName);
          if not assigned(DriverLink) then
            DriverLink:=TFDPhysFBDriverLink.Create(nil);
          if DriverLink.DriverState<TFDPhysDriverState.drsLoaded then
          begin
          {$IFDEF MSWINDOWS}
            DriverLink.VendorHome:= '';
            DriverLink.VendorLib:= ExtractFilePath(ParamStr(0))+'fbclient.dll';
          {$ENDIF}
          {$IF DEFINED(iOS) or DEFINED(ANDROID)}
            DriverLink.VendorHome:= '';
            DriverLink.VendorLib:= IncludeTrailingPathDelimiter(TPath.GetDocumentsPath) + 'libfbclient.so.4.0.0';
          {$ENDIF}
            if FileExists(DriverLink.VendorLib) then
              DriverLink.DriverIntf.Load;
          end;

     

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