Jump to content

Epo

Members
  • Content Count

    17
  • Joined

  • Last visited

Everything posted by Epo

  1. Epo

    The Delphi 11.2 release thread

    Thank you, Now it works perfectly!
  2. Epo

    The Delphi 11.2 release thread

    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 : ?? 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. Epo

    Interface question

    Delphi in a nutshell - Ray Lischner - Nutshell.pas
  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. Effectively, the ' " ' was missing. And it does the trick. Thank Dany,
  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. Thanks for this example. Precisely, I was wondering how to use this version of GroupBy.
  9. 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
  10. 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..
  11. Effectively, not what I want. I thought that this would be a nice (and efficient) solution to associate the result of GroupBy with a VirtualStringTree but from what you write, this is not the case. Thanks for the help and ...Spring4D, Stefan.
  12. 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;
  13. Epo

    Pipeline questioning

    Yes, of course... (it works) Great thanks for the help and ....the library.
  14. Hi, I would like to know if it is possible with the ICS components to open a (remote) terminal SSH session with a linux machine in a Delphi program (on Win 10 e.g.) and to send commands bash (ls, ps, xtodo, ...) and to receive the outputs (to know when the command execute is finished). If so, is there an example or skeleton for this application type ? Thanks a lot, Eddy
  15. Thank you, Franรงois. I will test it (probably - others tasks on fire) next week. Eddy
  16. Hi Joseph, Actually, the problem is not SSH itself. OpenSSH works perfectly with scripts (that open a connection, launch a script and close the connection). The goal is to keep an open connection and sends the instructions (and retrieve the outputs - stdout) like manually we can do it at a terminal but from a Delphi program. The open/close actions takes too much time in my case.
ร—