Jump to content

RaelB

Members
  • Content Count

    72
  • Joined

  • Last visited

Everything posted by RaelB

  1. Hi, The docs explicitly state that TOmniCounter is thread safe. Is the same true with TOmniValue?
  2. What does FGX stand for? 🙂
  3. Hi, In a control with scrollbar, is it possible to detect when the user clicks down and then up on the middle scrollbar button (i.e. draggable part of the scrollbar)? Thanks
  4. RaelB

    Detect when user clicks down on scrollbar button?

    Thanks. So if a TForm is holding such a component, e.g. TVirtualStringTree, how can I write a method on the form, such that it will be receiving those scrolling messages from the VST?
  5. Hi, I create object list collections as below: TNotes = class(TObjectList<TNote>) public ... end; TBooks = class(TObjectList<TBook>) public ... end; etc.. Is there a way I can write some generic code that will be able to take in TNotes or TBooks instances, for e.g.: function ListToJSONString(List: TObjectList<T>): string; begin ... end; I want to call as: s := ListToJSONString(FNotes) or s := ListToJSONString(FBooks) But the function does not compile... Can such a function be declared, or do I need to change my definition of TNotes and TBooks? (I don't like using TObjectList<TNote> or TObjectList<TBook> in my code, since I want to create local (i.e. public) methods for each list type, and it is also simpler writing TNotes instead of TObjectList<TNote> each time) Thanks
  6. Thanks, both solutions work for me. with the TSerializeJSON, I can make it a bit simpler (since I am really after a function) TSerializeJSON = class public class function ToJSON<T: class>(AList: TObjectList<T>) : string; end; Then i can call without declaring a variable 🙂
  7. Is using "TJSON.ObjectToJsonObject" to convert an object into a TJSONValue (and ultimately into a string). Is it possible for this conversion to leave out a specific field/fields, for e.g. using some type of attribute? For example: TPersistItem = class(TPersistent) private FChangeStatus: TChangeStatus; FId: Variant; FLoading: Boolean; procedure SetId(const Value: Variant); protected ... procedure SetChangeStatus(const Value: TChangeStatus); public ... published property ChangeStatus: TChangeStatus read FChangeStatus write SetChangeStatus; property Id: Variant read FId write SetId; end; I don't want fields "ChangeStatus" and "Loading" to be included in the result. Thanks
  8. RaelB

    Moving from Per Monitor V1 to V2

    Hi, I ask this question because I don't have 2 monitors so I can't test this for myself. Is moving from Per Monitor V1 to Per Monitor V2 "only good and no bad", or does one need to take care of certain things when making the move? By "only good and no bad", I mean there will be advantages, however, if certain V2 related events are not handled, the behaviour will default to V1 behaviour.. Thanks Rael
  9. RaelB

    Moving from Per Monitor V1 to V2

    yes, exactly..
  10. RaelB

    Delphi Package Manager - choices?

    Thanks for the info :).
  11. RaelB

    Delphi Package Manager - choices?

    So how do you manage working in an IDE with all those different lib versions? - Do you use specific IDE's for specific projects? - Are you using any tools to help you with that?.. Peter Below, once told me this: Perhaps you are using this idea..
  12. Can one include a TDataModule with DB components in a console application? I tried to do so, and was encountering some errors in the IDE (Delphi 10.3). Well that just might be a temporary thing in the IDE, or is this something one should not/can not do? Thanks
  13. Hello, I have opened an old open source project in the IDE (10.3), and breakpoints seem to have been disabled for this project. Q1. How can I re-enable breakpoints? In "Linking" I have set "Debug Information" = True, and "Map file" = Detailed. What other setting is relevant here? Q2. Another thing is that whenever an error occurs, the IDE goes straight to CPU view. How do I revert to the usual behaviour of going to the line of code where the error occurred? Thanks Rael
  14. Hello, I find when I lose my internet connection, the Delphi IDE hangs for a significant amount of time, maybe 1-2 minutes. Is there some option(s) that I can disable so that I will not experience this? I am on Delphi 10.3.2 Thank you Rael
  15. Hi, I'm using 15.0.33. If I change to Dark Theme, and then back to Light theme, the members area remains dark: If there are members, they will fill up the box with the correct theme, but there is still an area left in dark theme: I'm using Delphi 10.3.2 Thanks
  16. RaelB

    Theme updates incomplete

    Ok. Recently, I have been using Dark Theme at night and Light Theme during the day, so have been switching themes quite frequently .
  17. Hi, I'm using Delphi 10.3.2, and MMX 15.0.30. Frequently when I switch to the MMX tab (it is docked together with the Structure and Object Inspector Tabs), it is blank. If I switch to another tab (i.e. Object Inspector), and then back to MMX, then it will appear normally.
  18. RaelB

    Error parsing winmail.dat

    Hello, I have been using the IdCoderTNEF unit to decode winmail.dat messages. This has worked fine for me in the past, however in the last couple of months, I have been receiving this error when trying to parse such messages: EIdTnefUnknownMapiType: Encountered unknown MAPI type: 72, attribute: 32768 I am using the latest version of IdCoderTNEF from the github repo (Latest commit 5fb9225 on 26 Nov 2019 ) Part of my code looks like this: var J: Integer; TnefMsg: TIdMessage; TNefCoder: TIdCoderTNEF; begin .... for J := 0 to IdMessage.MessageParts.Count - 1 do begin if IdMessage.MessageParts[J] is TIdText then .... if IdMessage.MessageParts[J] is TIdAttachment then begin ... TNefCoder := TIdCoderTNEF.Create; try if TNefCoder.IsFilenameTnef(IdMessage.MessageParts[J].FileName) then begin TnefMsg := TIdMessage.Create(nil); try TNefCoder.Parse(IdMessage.MessageParts[J] as TIdAttachment, TNefMsg); ProcessMessage(TNefMsg); finally TnefMsg.Free; end; end else SaveMessagePart(IdMessage, IdMessage.MessageParts[J], UserName); finally TNefCoder.Free; end; end; end; .... Are you aware of such an issue? Thanks
  19. RaelB

    Error parsing winmail.dat

    I changed over to use https://github.com/CleverComponents/Tnef-Parser . It looks like it is a comprehensive implementation.
  20. Hi, What is the default shortcut to move the current line up or down? (i.e. it is swapping the current line with line above/below). Somehow I had trouble finding this shortcut online. In VS Code it would be Alt+Up/Down Arrow Thanks
  21. When is MMX Code Explorer not installed?
  22. Hi, I have a simple pipeline, that takes in a list of 20 items, and has one stage. For each item, the stage waits 1 second, and then sends a message to the main UI, which will add the item to a Memo, and update a ProgressBar. The code is looking like this: procedure TForm1.AddDownloadItems; var DownloadItem: TDownloadItem; I: Integer; begin for I := 0 to 19 do begin DownloadItem := TDownloadItem.Create; DownloadItem.Id := I; FDownloadItems.Add(DownloadItem); end; end; procedure TForm1.Stage1(const input, output: IOmniBlockingCollection; const Task: IOmniTask); var Item: TDownloadItem; InputItem: TOmniValue; begin for InputItem in Input do begin Item := TDownloadItem(InputItem.AsObject); Sleep(1000); Task.Comm.Send(0, Item.Id); Output.Add(InputItem); end; end; procedure TForm1.UpdateProgress(const task: IOmniTaskControl; const msg: TOmniMessage); begin Inc(Progress); Memo1.Lines.Add(msg.MsgData.AsString); ProgressBar1.Position := Progress; end; procedure TForm1.GetDownloadsPipline; var Item: TDownloadItem; begin { ====== Start Pipeline ========= } Screen.Cursor := crHourGlass; StartTime := GetTickCount; FPipeline := Parallel.Pipeline .Stage(Stage1, Parallel.TaskConfig.OnMessage(UpdateProgress)).NumTasks(4) //Environment.Process.Affinity.Count) .OnStop( procedure begin PostMessage(Form1.Handle, WM_STOPPED, 0, 0); end) .Run; Self.AddDownloadItems; for Item in FDownloadItems do FPipeline.Input.Add(Item); FPipeline.Input.CompleteAdding; end; When the program runs, a few items get added to the Memo, and only afterwards the progressbar updates. This seems strange. I would expect the progress bar to update simultaneously with the memo. Please see attached video. Any ideas? Thanks pipeline_progress.mp4
  23. Hi, I recently upgraded to 15.0.33. Every few minutes the IDE hangs for a few seconds. I'm mostly working with small to medium sized units. Delphi 10.3.2 Not sure if this is related to MMX, or perhaps to the IDE updating the number of days left to update subscription.. Thanks Rael
  24. Not sure what you mean by tab group? I think that's what I have (and still have the issue) My layout is as follows: You got any "Update Subscription" countdown in your ide?
×