Jump to content

Epo

Members
  • Content Count

    17
  • Joined

  • Last visited

Posts posted by Epo


  1. On 9/8/2022 at 3:10 PM, Dalija Prasnikar said:

    That is known (reported issue). There is some problem with migrating or applying Welcome screen layout after migration.

     

    When you launch IDE click Edit Layout on Welcome Screen. Reset Welcome Screen to default layout and then adjust it again the way you like it.

    Thank you, Now it works perfectly!


  2. Hi,

    I have Installed without problems 11.2 using the migration tool after (except for GetIt package). But each time the IDE start, before the welcome screen is displayed, an error is raised:

    Cannot add columns or rows while expand style is fixed size. If the button OK is pushed, the IDE is launched correctly.

    Probably an old param from the previous install.  Someone have an idea how to suppress it ?

    When it is closing, an another error : ??

    image.png.b97a4fe84ec53e74dd1beb6be99bd5a3.png

     

    Thanks,

    Eddy

     

    Stack:

    [709998A2]{vcl280.bpl  } Vcl.ExtCtrls.PlaceInCell (Line 4808, "Vcl.ExtCtrls.pas" + 59) + $1C
    [709999B2]{vcl280.bpl  } Vcl.ExtCtrls.TControlCollection.AddControl (Line 4821, "Vcl.ExtCtrls.pas" + 5) + $9
    [70997C71]{vcl280.bpl  } Vcl.ExtCtrls.TCustomGridPanel.CMControlChange (Line 4073, "Vcl.ExtCtrls.pas" + 11) + $11
    [708C7F46]{vcl280.bpl  } Vcl.Controls.TControl.WndProc (Line 7584, "Vcl.Controls.pas" + 91) + $6
    [708D790F]{vcl280.bpl  } Vcl.Controls.TMargins.SetControlBounds (Line 17272, "Vcl.Controls.pas" + 12) + $14
    [708CA495]{vcl280.bpl  } Vcl.Controls.TWinControl.ArrangeControl (Line 9003, "Vcl.Controls.pas" + 78) + $16
    [708CA4BC]{vcl280.bpl  } Vcl.Controls.TWinControl.ArrangeControl (Line 9005, "Vcl.Controls.pas" + 80) + $22
    [70997477]{vcl280.bpl  } Vcl.ExtCtrls.ArrangeControlInCell (Line 3876, "Vcl.ExtCtrls.pas" + 2) + $28
    [71AAA388]{rtl280.bpl  } System.@FreeMem (Line 4985, "System.pas" + 20) + $0
    [71AB68F3]{rtl280.bpl  } System.@DynArrayClear (Line 36661, "System.pas" + 49) + $0
    [708C99FE]{vcl280.bpl  } Vcl.Controls.TControl.GetStyleName (Line 8614, "Vcl.Controls.pas" + 1) + $8
    [708C9A2A]{vcl280.bpl  } Vcl.Controls.TControl.GetStyleName (Line 8618, "Vcl.Controls.pas" + 5) + $7
    [71B25F9E]{rtl280.bpl  } System.Generics.Defaults.Equals_Class (Line 1138, "System.Generics.Defaults.pas" + 1) + $6
    [70AFE3CB]{vcl280.bpl  } Vcl.Styles.{System.Generics.Collections}TDictionary<System.Classes.TComponent,Vcl.Themes.TStyleHook>.GetBucketIndex (Line 7098, "System.Generics.Collections.pas" + 16) + $19
    [709A83F1]{vcl280.bpl  } Vcl.ExtCtrls.TPanelStyleHook.AcceptMessage (Line 12472, "Vcl.ExtCtrls.pas" + 1) + $2
    [709D5A87]{vcl280.bpl  } Vcl.Themes.TStyleHook.HandleMessage (Line 7377, "Vcl.Themes.pas" + 3) + $6
    [70AF9962]{vcl280.bpl  } Vcl.Styles.TStyleEngine.HandleMessage (Line 3601, "Vcl.Styles.pas" + 22) + $B
    [709D2528]{vcl280.bpl  } Vcl.Themes.TStyleManager.HandleMessage (Line 5858, "Vcl.Themes.pas" + 11) + $11
    [708CB0CF]{vcl280.bpl  } Vcl.Controls.TWinControl.DoHandleStyleMessage (Line 9449, "Vcl.Controls.pas" + 0) + $F
    [708CD0F1]{vcl280.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10631, "Vcl.Controls.pas" + 170) + $6
    [709978BA]{vcl280.bpl  } Vcl.ExtCtrls.TCustomGridPanel.AlignControls (Line 3959, "Vcl.ExtCtrls.pas" + 5) + $1
    [708C7B7C]{vcl280.bpl  } Vcl.Controls.TControl.Perform (Line 7362, "Vcl.Controls.pas" + 10) + $8
    [708CB406]{vcl280.bpl  } Vcl.Controls.TWinControl.InsertControl (Line 9561, "Vcl.Controls.pas" + 33) + $B
    [708C64B2]{vcl280.bpl  } Vcl.Controls.TControl.SetParent (Line 6364, "Vcl.Controls.pas" + 9) + $4
    [708D2A91]{vcl280.bpl  } Vcl.Controls.TWinControl.SetParent (Line 14230, "Vcl.Controls.pas" + 5) + $5
    [70A07CB4]{vcl280.bpl  } Vcl.Forms.TCustomFrame.SetParent (Line 3897, "Vcl.Forms.pas" + 7) + $5
    [6AF116E2]{WelcomePageIDE280.bpl} WelcomePage.LayoutDesigner.TLayoutDesigner.SetCellControl (Line 680, "WelcomePage.LayoutDesigner.pas" + 5) + $7
    [6AF1B337]{WelcomePageIDE280.bpl} WelcomePage.View.TWelcomePageFrameUI.OnLoadItemEvent (Line 293, "WelcomePage.View.pas" + 9) + $14
    [6AF1134A]{WelcomePageIDE280.bpl} WelcomePage.LayoutDesigner.TLayoutDesigner.LoadLayout (Line 583, "WelcomePage.LayoutDesigner.pas" + 72) + $1C
    [6AF10A34]{WelcomePageIDE280.bpl} WelcomePage.LayoutDesigner.TLayoutDesigner.DesignLayout (Line 305, "WelcomePage.LayoutDesigner.pas" + 1) + $2
    [6AF1B558]{WelcomePageIDE280.bpl} WelcomePage.View.TWelcomePageFrameUI.InitContentPlugins (Line 329, "WelcomePage.View.pas" + 😎 + $5
    [6AF1B7D0]{WelcomePageIDE280.bpl} WelcomePage.View.TWelcomePageFrameUI.InitPlugins (Line 353, "WelcomePage.View.pas" + 2) + $2
    [6AF1B983]{WelcomePageIDE280.bpl} WelcomePage.View.TWelcomePageFrameUI.Initialize$ActRec.$0$Body (Line 387, "WelcomePage.View.pas" + 0) + $3
    [6AF0A975]{WelcomePageIDE280.bpl} WelcomePage.Services.TWPPluginService.RegisterPluginCreator (Line 236, "WelcomePage.Services.pas" + 7) + $5
    [6AF855E6]{WelcomePage.Plugin.CreateNew280.bpl} WPPlugin.CreateNew.Creator.TWPCreateNewCreator.ProductStartup (Line 132, "WPPlugin.CreateNew.Creator.pas" + 0) + $1E
    [7117AF1D]{designide280.bpl} Events.TEvent.Send (Line 154, "Events.pas" + 2) + $11
    [00286C34]{bds.exe     } AppMain.PostCreateInit (Line 2555, "AppMain.pas" + 80) + $B
    [0028708E]{bds.exe     } AppMain.TAppBuilder.CMPostCreateInit (Line 2644, "AppMain.pas" + 4) + $1
    [708C7F46]{vcl280.bpl  } Vcl.Controls.TControl.WndProc (Line 7584, "Vcl.Controls.pas" + 91) + $6
    [71AB0784]{rtl280.bpl  } System.TMonitor.Destroy (Line 19530, "System.pas" + 0) + $0
    [71AB477A]{rtl280.bpl  } System.@FinalizeRecord (Line 32799, "System.pas" + 72) + $2
    [709D2309]{vcl280.bpl  } Vcl.Themes.TStyleManager.GetStyle (Line 5789, "Vcl.Themes.pas" + 7) + $D
    [71AB155C]{rtl280.bpl  } System.@TryFinallyExit (Line 23376, "System.pas" + 😎 + $0
    [709D23F7]{vcl280.bpl  } Vcl.Themes.TStyleManager.GetStyle (Line 5800, "Vcl.Themes.pas" + 18) + $1E
    [70AF9962]{vcl280.bpl  } Vcl.Styles.TStyleEngine.HandleMessage (Line 3601, "Vcl.Styles.pas" + 22) + $B
    [71AB02DF]{rtl280.bpl  } System.TObject.Dispatch (Line 18846, "System.pas" + 11) + $0
    [709D62B9]{vcl280.bpl  } Vcl.Themes.TStyleHook.WndProc (Line 7689, "Vcl.Themes.pas" + 38) + $6
    [709D649A]{vcl280.bpl  } Vcl.Themes.TMouseTrackControlStyleHook.WndProc (Line 7788, "Vcl.Themes.pas" + 1) + $4
    [70A21D64]{vcl280.bpl  } Vcl.Forms.TFormStyleHook.WndProc (Line 18386, "Vcl.Forms.pas" + 14) + $5
    [709D5ADE]{vcl280.bpl  } Vcl.Themes.TStyleHook.HandleMessage (Line 7394, "Vcl.Themes.pas" + 20) + $6
    [70A1D7D3]{vcl280.bpl  } Vcl.Forms.TFormStyleHook.IsStyleBorder (Line 16509, "Vcl.Forms.pas" + 1) + $C
    [70A1D814]{vcl280.bpl  } Vcl.Forms.TFormStyleHook.HandleMessage (Line 16516, "Vcl.Forms.pas" + 2) + $6
    [70AF9962]{vcl280.bpl  } Vcl.Styles.TStyleEngine.HandleMessage (Line 3601, "Vcl.Styles.pas" + 22) + $B
    [709D2528]{vcl280.bpl  } Vcl.Themes.TStyleManager.HandleMessage (Line 5858, "Vcl.Themes.pas" + 11) + $11
    [708CB0CF]{vcl280.bpl  } Vcl.Controls.TWinControl.DoHandleStyleMessage (Line 9449, "Vcl.Controls.pas" + 0) + $F
    [708CD0F1]{vcl280.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10631, "Vcl.Controls.pas" + 170) + $6
    [708C7B7C]{vcl280.bpl  } Vcl.Controls.TControl.Perform (Line 7362, "Vcl.Controls.pas" + 10) + $8
    [708D01BD]{vcl280.bpl  } Vcl.Controls.TWinControl.Invalidate (Line 12693, "Vcl.Controls.pas" + 0) + $9
    [70A0974C]{vcl280.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 4792, "Vcl.Forms.pas" + 1) + $37
    [70A09E04]{vcl280.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 5013, "Vcl.Forms.pas" + 222) + $5
    [70A09E1C]{vcl280.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 5014, "Vcl.Forms.pas" + 223) + $13
    [708CC5FC]{vcl280.bpl  } Vcl.Controls.TWinControl.MainWndProc (Line 10308, "Vcl.Controls.pas" + 3) + $6
    [71BC580C]{rtl280.bpl  } System.Classes.StdWndProc (Line 18490, "System.Classes.pas" + 😎 + $0
    [70A1417F]{vcl280.bpl  } Vcl.Forms.TApplication.ProcessMessage (Line 11460, "Vcl.Forms.pas" + 23) + $1
    [70A141AA]{vcl280.bpl  } Vcl.Forms.TApplication.ProcessMessages (Line 11482, "Vcl.Forms.pas" + 1) + $4
    [00287803]{bds.exe     } AppMain.TAppBuilder.ApplicationActivated (Line 2750, "AppMain.pas" + 0) + $7
    [70A6DF23]{vcl280.bpl  } Vcl.AppEvnts.TCustomApplicationEvents.DoActivate (Line 210, "Vcl.AppEvnts.pas" + 1) + $16
    [70A6E5C5]{vcl280.bpl  } Vcl.AppEvnts.TMultiCaster.DoActivate (Line 438, "Vcl.AppEvnts.pas" + 5) + $10
    [70A1362F]{vcl280.bpl  } Vcl.Forms.TApplication.WndProc (Line 11035, "Vcl.Forms.pas" + 140) + $C
    [71BC580C]{rtl280.bpl  } System.Classes.StdWndProc (Line 18490, "System.Classes.pas" + 😎 + $0
    [70A1417F]{vcl280.bpl  } Vcl.Forms.TApplication.ProcessMessage (Line 11460, "Vcl.Forms.pas" + 23) + $1
    [70A141AA]{vcl280.bpl  } Vcl.Forms.TApplication.ProcessMessages (Line 11482, "Vcl.Forms.pas" + 1) + $4
    [002D8070]{bds.exe     } bds.bds (Line 224, "" + 13) + $2

     


  3.  

    Delphi in a nutshell - Ray Lischner - Nutshell.pas

    Quote

    .....

    // Cast an interface to a Pointer such that the reference
    // count is incremented and the interface will not be freed
    // until you call ReleaseIUnknown.
    function RefIUnknown(const Intf: IUnknown): Pointer;
    begin
      Intf._AddRef;               // Increment the reference count.
      Result := Pointer(Intf);    // Save the interface pointer.
    end;

     

    // Release the interface whose value is stored in the pointer P.
    procedure ReleaseIUnknown(P: Pointer);
    var
      Intf: IUnknown;
    begin
      Pointer(Intf) := P;
      // Delphi releases the interface when Intf goes out of scope.
    end;

    ......

     

    • Thanks 1

  4. Hi,

    Using the VirtualTreeView, an error is raised but why ?. I have recreated a minimal sample to reproduce it. Either my coding does an error (more likely), either the component do it.

    The problem comes when a node is deleted (only when the deleted node has one sibbling with subnodes) from the OnGetImageIndex event. The event is called with an index greater than avalaible nodes.

    If someone has an idea ?

     

    Delphi 11 + VirtualTree for VCL 2021.09.

     

    Thanks a lot,

    Eddy

    TestVclVT.zip


  5. Hi,

    How can I do to bind -e.g. the color of- a shape (set on each line of a DataBand) with a field of the current line of dataset. I have tried to use the event "OnBeforePrint" (of the DataBand and of the object itself) but it does not work.  Maybe it is the field access that is not correct.


    Thank for help,
    Eddy

    procedure DataBandOnBeforePrint(Sender: TfrxComponent);
    begin
      if <Sample.CFRStatus> = '0' then
        shCFR.Visible := False
      else
      begin              
        shCFR.Visible := True;  
        if <Sample.CFRStatus> = '2' then
          shCFR.Color := clRed
        else
        if <Sample.CFRStatus> = '1' then
          shCFR.Color := clGreen;
      end;  
    end;  
     
    procedure shCFROnBeforePrint(Sender: TfrxComponent);
    begin
      if <Sample.CFRStatus> = '0' then
        shCFR.Visible := False
      else
      begin              
        shCFR.Visible := True;  
        if <Sample.CFRStatus> = '2' then
          shCFR.Color := clRed
        else
        if <Sample.CFRStatus> = '1' then
          shCFR.Color := clGreen;
      end;  
    end;


     


  6. The idea is to link nicely a struct to a VStringTree with multiple levels (2/3). To connect the OnGetText to it, the VST gives a node (with an index and parent..Index you known it ).  As you write the ElementAt is not very efficient. I suppose that it is better to use a list and some TFunc<> to filter ("GroupBy") one for each key level.  And Spring4D has everything you need to do it..


  7. Using the GroupBy method, I wonder if it possible to "imbricate" GroupBy in Spring4D to generate a "two levels" tree in one pass
    Some sort of:

    var
     GByData    : IEnumerable<IGrouping<string,TVariable>>;
     GByData2   : IEnumerable<IGrouping<string,TVariable>>;
    begin
      GByData := TEnumerable.GroupBy<TVariable, string>(IEnumTV,
        function (const ASVar: TVariable): string
        begin
          Result :=  ASVar.AppName;
        end);
    
      GByData2 := TEnumerable.GroupBy<TVariable, string>(GByData,
        function (const ASVar: TVariable): string
        begin
          Result :=  ASVar.PrjName;
        end);
    end;


    Thanks a lot,

     

    Eddy

     


  8. Hi,

    In testing the function TEnumerable.GroupBy<T, TKey>(const source: IEnumerable<T>;  const keySelector: Func<T, TKey>): IEnumerable<IGrouping<TKey, T>> in
    Spring Version Dev 2021/03/24 and Version 1.2.4, I find that a noticeable difference is present if I am not mistaken. The 3rd listbox (in the associated example) does not have the elements in the same order (and is even incorrect in the dev version- maybe because defered execution) depending on the version. In version 1.2.4, the order is "stable", which is an interesting property from my point of view. Will the behavior of the Dev version be the one adopted in the next version?

     

    Thanks,

    Eddy

    ITreeData.zip


  9. Hi,

     

    I want use a pipeline. The only peculiarity is that in the first stage, there is only on item in the input but many in the output collection.

    But in the stage one, when it insert the first output, the exception 'Adding to completed collection'" occurs.

    Although the Input.CompleteAdding statement was not sent. Something is wrong certainly but where  ?

     

    Thanks for help,

     

    Eddy

     

    Simplified case below (using Delphi 10.4/ Omnithread 3.07.08)

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      PipelineExecute('1,2,3,4,6,10');
    end;
    
    procedure TForm1.PipelineExecute(const sMes: string);
    var
      ppl: IOmniPipeline;
      Value: TOmniValue;
    begin
      ppl := Parallel.Pipeline
        .Stage(StageOne)
        .Stage(StageTwo)
        .run;
    
      ppl.Input.Add(sxmlMes);
    //  ppl.Input.CompleteAdding;
    end;
    
    
    procedure TForm1.StageOne(const input, output: IOmniBlockingCollection);
    var
      s: string;
      OmVal: TOmniValue;
      arS: TArray<string>;
      i: Integer;
    begin
      input.Take(OmVal); // 0
      arS := SplitString(OmVal.AsString,',');
      for i := 0 to Length(arS) -1 do
        Output.Add( StrToInt(ars[i])* 2);
    end;
    
    procedure TForm1.StageTwo(const input, output: IOmniBlockingCollection);
    var
      i: Integer;
      OmVal: TOmniValue;
    begin
      for OmVal in input do
      begin
        //.......
        output.Add(omval) ;
      end;
    end;

     

×