Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by dummzeuch

  1. I think I asked that before: Is there a keyboard shortcut for activating the code editor? If I remember correctly the answers were: No, but you can use F12 to toggle between form designer and code editor, and F11 for a three way toggle between object inspector, form designer and code editor. Do I remember correctly? If yes, I have some good news for those who have missed this functionality (which definitely includes myself): I have just added a simple expert to GExperts that does nothing else but activate and focus the code editor. But that raises a question: What should the default keyboard shortcut be for this expert? So I resurrected Nicholas Ring's Delphi Shortcut Finder, in order to find out what is still available. But unfortunately this tool, useful as it is, basically is only a list of known shortcuts with a filter function, so it might miss shortcuts from possibly widely used tools which I simply don't know. I first thought about some F11 combination but it turned out that they are already taken, the same goes for F12. Then there is Shift+F3, but I think this is used for "Find Previous" in some tools. The obvious combinations with the E and C key are also already taken. Shift+F6 seemed to be free for now. (F6 calls IDE Insight and Ctrl+F6 switches between C++ source and header files.), so I assigned it as the default for the new expert. Or Is there a widely used plugin that uses Shift+F6?
  2. dummzeuch

    quality embaradero.com is empty

    Isn't database problems the normal state there? 😉
  3. dummzeuch

    Can GExperts format multiline method definition to single line?

    No, GExperts can't (because nobody answered that question yet).
  4. dummzeuch

    How do you organize units, forms?

    No, it only sorts lines alphabetically in ascending or descending order. Optionally it ignores prefixes like "function" or "procedure". It does not work if the declaration spans multiple lines.
  5. After I just accidentally logged off when I just wanted to mark all messages as read, I have a suggestion: Can we get a confirmation dialog when logging off? When on mobile these two options very near to each other.
  6. dummzeuch

    How do you organize units, forms?

    One of the first things I do is delete those annoying comments the IDE inserts: Private/Protected etc. declarations. Apart from that I sometimes use the GExperts sort expert to sort the methods inside a section alphabetically. But normally I just let the IDE put them in whatever order it uses.
  7. dummzeuch

    GExperts SourceExport problem

    My version of Thunderbird (52.9.1) doesn't insert the prefix for a HTML fragment, but it shows the code as HTML code (the same goes for RTF fragment) No formatted text at all. I'll update and check the latest version too
  8. dummzeuch

    GExperts SourceExport problem

    Copying as "Formatted text/RTF/HTML" does not create an html fragment but a document complete with CSS. Have you tried that? Of course it depends which of the three formats the receiving application inserts. OK, it won't work either. Thunderbird in that case simply inserts plain text. 😞
  9. dummzeuch

    GExperts SourceExport problem

    Ouch, I fixed the version number but not the name.
  10. dummzeuch

    GExperts SourceExport problem

    This is something defined by Microsoft: https://docs.microsoft.com/en-us/windows/win32/dataxchg/html-clipboard-format When I paste such a fragment into Notepad++ (or the standard Notepad) I don't get these prefixes. So I guess it's Thunderbird which does not know how to handle it.
  11. dummzeuch

    GExperts SourceExport problem

    This seems to be missing the CSS for the various span elements. It's possible that this was meant to copy multiple code fragments into the same document which already has got the CSS definitions. But I don't really know, I have never used or looked at this functionality before.
  12. dummzeuch

    GExperts SourceExport problem

    I have just updated SynEdit to the latest version from GitHub. Since both, RTF and HTML-Snippets are generated using the functionality in SynEdit, this may solve the problem. But as I said: I haven't got any Winword license to test this. Could you please compile a new dll with the current sources and check?
  13. There is the structure view which displays all classes, fields, methods etc., global types, variables and constants as well as the uses clause (of the interface section only WTF?)
  14. dummzeuch

    GExperts SourceExport problem

    I just tried to reproduce this, but I could not. The RTF-code saved to a file looks fine to me and pasting into Wordpad and Libre Office Writer also works as expected. So this might be a MS Word specific issue. I don't own any MS Word license that I could use for the test. I tried Delphi 2007 and 10.3 since you did not mention your version. Does anybody know of a tool that can display RTF clipboard contents as text (I only found some that strip RTF formatting from the text) or do I have to write one myself? @PeterPanettone what about the bug report? Maybe it's something in your file(s) that causes the problem.
  15. dummzeuch

    Best delphi so far?

    If that's true, the IDE quality must have been atrocious in later versions, because in my experience XE2 isn't really stable. But maybe that's a matter of how you use them. I still prefer the Delphi 2007 IDE over the later ones, but again that might just be the way I use it. The 10.1 and 10.2 IDEs also seem OK, but I haven't used them much. 10.3 definitively is a step back: It's slow, it's ugly and its buggy.
  16. I have got a VirtualStringTree in grid mode and I would like to autosize the columns so that they are wide enough to display the column text and the column header. Calling vst.Header.AutoFitColumns works for the column text but not for the header. I would have thought that this question has been asked and answerted before, but my Google fu is becoming ever weaker. I found lots of hints on how to fit the column text, but not the header.
  17. dummzeuch

    autosize columns in VirtualStringTree in grid mode

    Since apparently nobody has ans answer and I was unable to find any settings or method to achieve this, here is the code I used: procedure TMyForm.ResizeTree(_vst: TVirtualStringTree); var c: UInt32; ws: WideString; cnv: TCanvas; Fnt: TFont; ThisWidth: UInt32; MinWidth: UInt32; Node: PVirtualNode; r: TRect; s: TSize; begin cnv := _vst.Canvas; for c := 0 to _vst.Header.Columns.Count - 1 do begin ws := _vst.Header.Columns[c].Text; GetTextExtentPoint32W(cnv.Handle, PWideChar(ws), Length(ws), s); MinWidth := s.cx + 10; Fnt := _vst.Font; Node := _vst.RootNode.FirstChild; while Assigned(Node) do begin _vst.GetTextInfo(Node, c, Fnt, r, ws); ThisWidth := r.Right - r.Left + 10; if MinWidth < ThisWidth then MinWidth := ThisWidth; Node := Node.NextSibling; end; _vst.Header.Columns[c].Width := MinWidth; end; end; It's probably not perfect but it worked for me (until I dropped the VirtualStringTree because it just added too much complexity for what I wanted to achieve, and replaced it with the much simpler TdzVirtualTreeView which I had to extend for my use case.) I particular I don't like the constant 10 pixels in the code.
  18. dummzeuch

    GExperts SourceExport problem

    My guess would be that these are additional line feed characters that word can't handle. But for now that's just a guess. Please file a bug report and include all files you used to create these screenshots.
  19. dummzeuch

    GExperts SourceExport problem

    I guess you mean the squares on the left hand border? (You should have said so, because i just starred at this picture for several minutes before i noticed them.) Everything else looks fine to me.
  20. I have been using two tools to add additional data to my executable files in post build scripts for years: assemble.exe from GNUGettext for Delphi MakeJclDbg.exe from Project Jedi Both tools open the freshly built executable and append chunks of data to it. And both started to fail with the error “[project].exe is open in another program” more often lately. I never managed to find out exactly what causes the problem. First I suspected BitDefender antivirus, but the error still occurs after I have switched to Windows Defender, so it’s not just BitDefender but probably any antivirus software that is causing the trouble. As a first try I added a 2 seconds delay between the compiling/linking and the execution of each of these tools. It seemed to help, the errors became much less frequently but they still occurred. Also those 4 seconds always felt like eternity (the whole compile usually takes less than 10 seconds, so 4 additional seconds is a whopping 40%). So, a few days ago I had enough. I’ve got the source code of these tools, so why not simply add several tries to opening the file? That’s what I did: Both tools now try to open the file and if that fails wait for a second and try again. Rinse and repeat up to 10 times. In my tests, it rarely took more than 2 tries, usually the first one succeeded. That means it shaved these 4 seconds off the build time again with the rare exception of adding them again at very few occasions. Read on (and get download links) in my blog post https://blog.dummzeuch.de/2019/06/23/project-exe-is-open-in-another-program-errors/
  21. Given the following class: unit Ancestors; interface type TAncestorClass = class private procedure SomeMethod; end; [... stuff ...] ... and a descendant class that is declared in a different unit: unit Descendants; interface uses Ancestors; type TDescendant = class(TAncestor) protected procedure SomeOtherMethod; end; // [...] implementation procedure TDescendant.SomeOtherMethod; begin SomeMethod; // <-- this won't compile end; I need to call the private TAncestor.SomeMethod from TDescendant.SomeOtherMethod. This of course won't compile because TAncestor.SomeMethod is declared as private and I cannot change that declaration (It's part of the Delphi VCL). My solution so far is to copy the implementation to my unit, but I am pretty sure this would violate Embarcadero's copyright on that (non trivial) code if I were to release that source code. So I am looking for a different solution. It guess it would be possible to somehow patch my class to call the original code, but I have never done something like that. Is there any documentation / blog post / example code on how to do that? I am aware that I would then possibly have to adapt this patch to every Delphi version. Any hints? Edit: Note: Class Helpers and extended RTTI are not an option here. This must work with Delphi 2007.
  22. That works only for private fields, not for private methods.
  23. I'll check it out, thanks.
  24. Unfortunately that only works in class helpers.