Jump to content

Tom F

  • Content Count

  • Joined

  • Last visited

  • Days Won


Tom F last won the day on June 16

Tom F had the most liked content!

Community Reputation

23 Excellent

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Tom F

    Your RAD Studio 10.4 Sydney issues

    Kazantsev: GREAT write-up on the quality site! (I don't mean that sarcastically.)
  2. Me too! It seems like such a trivial thing but my habitual typing is so ingrained to use Parnassus Bookmarks that Iā€™m incredibly unproductive and frustrated without it.
  3. Konopka KSVC and Bookmarks are now available in GetIt for Syndey Edit: Navigator is also now available.
  4. Tom F

    Your RAD Studio 10.4 Sydney issues

    If you're waiting for Raize Konopka KSVC like I am, please vote for this issue: https://quality.embarcadero.com/browse/RSP-29400.
  5. Tom F

    Modern TColorDialog

    TMS has at least one: https://www.tmssoftware.com/site/advofficegraphics.asp. I've used their FMX version and have been happy with it.
  6. Tom F

    Your RAD Studio 10.4 Sydney issues

    For years I used the ISO because I seemed to have problems with the web install. I know this release is supposed to unify the two installers and eliminate problems. However, I still used the ISO. And then I couldn't get GetIt to work to download CodeSite, etc. I asked about this at the GoToMeeting just now. I needed to RTFM. šŸ™‚ Be sure to read the release notes (http://docwiki.embarcadero.com/RADStudio/Sydney/en/Release_Notes) which state:
  7. Tom F

    Profiler for Delphi

    It sounds to me that your main complaint is an economic one? ā€” the vendor hasn't updated the software during the year following your initial purchase (during which time it would be free.) I've had that happen and I know it can be disappointing. TBH, being a small one-man business myself, I've done that on a few occasions to my customers too. šŸ˜Æ The good news as far as I'm concerned is that there are no bug fixes or improvements I'm anxiously waiting for in NQS. I suppose the UI could use a facelift and some rough edges in the workflow polished. But, in general, NQS does what I need it too: I was able to quickly narrow down the bottlenecks in my application and test my fixes. Tom
  8. Tom F

    Profiler for Delphi

    Yes, it's the old TurboPower profiler. The UI didn't bother me. No doubt it could be improved, but I found it easy to understand and get my work done.
  9. Tom F

    Profiler for Delphi

    I used AQTime for many years, but it seemed to me that SmartBear wasn't really interested in the Delphi market and their product suffered ... and was expensive. I more recently purchased Nexus Quality Suite and was very happy with it. Great tool, great support, great modern product: https://www.nexusdb.com/support/index.php?q=node/27156. As someone previously said, "You get what you pay for." NQS was well worth what we paid for it.
  10. Bill, not to start a flame war, but I love the trailing comment on procedures: procedure SomeOp; begin end; { SomeOp } Why? Because when I'm scrolling up from the bottom of a unit, when a procedure's end; statement comes into view, I can immediately identify the procedure without having to scroll up further. As you say, the IDE does not strip empty procedures that have a comment like this. But, IMO, that's a small price to pay. What does bug me is that when I use Shift_Ctrl-C, the IDE puts new methods between the end; and the comment. But even with that hassle, I still prefer the comment.
  11. Thanks, Anders. The List-View control works great for my purposes. THANKS!!
  12. Is there a VCL component (preferably included in the current Delphi) that shows a grid of items that automatically adds and removes columns as it's resized? I want to show items in alphabetical order across each row, as shown below. (Horizontal snaking) As the grid is resized (when the user resizes its form), I want the grid to automatically add more columns, repopulating as shown below. I know I could populate a TStringGrid, but I'd have to monitor the current width, determine how many columns it can accommodate, resize the grid and then repopulate, etc. Rather than re-inventing the wheel (mine would be wobbly and squeak!) I'd rather just hand a TStringList to a pre-existing visual component and have it handle the details. In case I want to create my own from a TStringGrid, the OnResize event fires multiple times as a user drags the borders of the form. How do I detect that the user has finished resizing so I can repopulate the grid? Three columns A B C D E F G H I When the user widens the form so that it's wide enough for five columns, it would look like this: Five Columns A B C D E F G H I One Column A B C C D F G H I
  13. I'm planning to approach the author of another program that captures video data. I'm going to ask her to team up with me, sending the video frames that she's capturing in realtime to my 32-bit Delphi Rio VCL app running at the same time. Her app is probably written in C# or C++. The data will be video frames and maybe 10 or 15 megs each, 30 fps. I don't mind dropping frames so I don't need more than one memory buffer. I don't want her app to block if my app is too busy to pick up his data. In other words, if she has a frame to send and I'm in the process of reading his data from shared memory, he can just skip sending me that frame. Basically, I want some way she can fill a memory buffer and then signal me it's ready. I'd receive a Windows message and read the buffer. She and I would clearly need some locking semaphores so we can access the data safely. And there will be some messaging necessary at startup and shutdown. And I need to have a way of rapidly copying the buffer she provides into a variable in my app. I'd like to propose to her a reliable mechanism that's simple for both of us to implement. I'm okay using third-party tools if necessary for my end (in Delphi) for handshaking and messaging and data transfer. I don't know much about interprocess communication, so I don't know what issues or tools I should be looking at. I've thought a bit about some semaphores and shared memory and PostMessage notifications between our programs, but I don't have any experience in them or other similar tools. About all I know about these types of systems is that they can dramatically fail in unpredictable ways and that they're hard to do right. šŸ˜ž I, of course, don't want to re-invent the wheel, so I'm asking here: Can anyone give me suggestions on how to approach this?
  14. When a user clicks on the TImage below, I want to know which arrow, if any, they've clicked on. The image is loaded in Image1.Picture from a bmp that is loaded at runtime. The code below works on my desktop machine, but not on a laptop, where it most often returns 'You did not click on an arrow.' Perhaps this is due to dependencies on screen size, resolution, color depth, or ??? I'm not really familiar with how HDC, GetCursorPos, and GetPixel work let alone in different environments. Any suggestions for a way to reliably detect which arrow is clicked. 32-bit VCL app. Procedure TForm1.Image1Click(Sender: TObject); const COLOR_VIOLET = 4002090; // Determined empirically by examining at result of GetPixel call below COLOR_PURPLE = 8334696; COLOR_BLUE = 11757312; COLOR_GREEN = 7186176; COLOR_RED = 255; var P: TPoint; dc: HDC; ClickedColor: TColor; begin GetCursorPos(P); dc := GetDC(0); ClickedColor := GetPixel(dc, P.X, P.Y); if (ClickedColor = COLOR_VIOLET) then ShowMessage('Violet') else if (ClickedColor = COLOR_PURPLE) then ShowMessage('Purple') else if (ClickedColor = COLOR_BLUE) then ShowMessage('Blue') else if (ClickedColor = COLOR_GREEN) then ShowMessage('Green') else if (ClickedColor = COLOR_RED) then ShowMessage('Red') else ShowMessage('You did not click on an arrow.') end;