-
Content Count
2907 -
Joined
-
Last visited
-
Days Won
169
Everything posted by Uwe Raabe
-
Whatever you implement, you should always measure the performance against the brute force update. If the server were a recent InterBase one, you could make it simple and fast with Change Views, but these are not available with other databases.
-
Why so complicated? Dump DOCS_TABLE and rebuild it from scratch - assuming you actually have access to the server. Otherwise you have to work with the data available in DOCS_TABLE anyway.
-
Why can't I install this monospaced font in Delphi ?
Uwe Raabe replied to A.M. Hoornweg's topic in Delphi IDE and APIs
Can Lazarus make use of any font in the editor? Even the non-monospaced ones? -
That's basically what MMX does, too. Besides the IDE itself (with active CodeInsight) there may as well be other plugins spawning their own parser process. This bothers me for years now. It might get better when LSP is up and working reliably, but that might take a while and will be restricted on newer Delphi versions. Thanks for the tip, though. 👍
-
How Delphi manages mapping data aware control to a data source on a data module
Uwe Raabe replied to Martyn Spencer's topic in Databases
That may be key here. Before looking for global components all components owned by the current one are searched (Keywords: DoFixupReferences, FindNestedComponent). So if your datamodule is owned by the form it should be found first. You may probably even omit the renaming step after loading. -
How Delphi manages mapping data aware control to a data source on a data module
Uwe Raabe replied to Martyn Spencer's topic in Databases
Indeed, it is! The references are resolved in TReader.FixupReferences and are based on component names. To wire the datasource on the datamodule to the controls on the form, the datamodule has to be created before the form loads. As all forms and datamodules register themselves in the Screen.Forms and Screen.Datamodules lists, they are found by simply iterating over these lists in the Vcl.Forms.FindGlobalComponent procedure, which is registered via RegisterFindGlobalComponentProc. You can register your own FindGlobalComponentProc this way, which takes precedence over the internal one (System.Classes.FindGlobalComponents uses a reverse loop). The implementation might be a bit tricky, though. -
👍 Sometimes we need to overcome our habits hindering us.
-
paste into watch list
Uwe Raabe replied to Attila Kovacs's topic in Tips / Blogs / Tutorials / Videos
You have to be inside a debugging session. -
paste into watch list
Uwe Raabe replied to Attila Kovacs's topic in Tips / Blogs / Tutorials / Videos
Dragging works, too. At least here in 10.3.3: -
paste into watch list
Uwe Raabe replied to Attila Kovacs's topic in Tips / Blogs / Tutorials / Videos
I guess we are talking about valid expressions and not arbitrary code. BTW, even arbitrary code can be pasted or dragged into the watch list. Often that doesn't make any sense, though, as most of the time you will see an E2156 Expression too complicated. -
How do you deal with non-critical customer feature requests?
Uwe Raabe replied to Mike Torrettinni's topic in Project Planning and -Management
Often the time spent for low priority tickets would better be used for refactoring the code - even if the only benefit is the developers better understanding the code and ease maintaining it. That might not impact your customers directly, but definitely on the long term. First implementing that low priority ticket instead may as well have the opposite effect. -
F6 Search feature does not work anymore?
Uwe Raabe replied to PeterPanettone's topic in Delphi IDE and APIs
Seems as the IDE Insight toolbar is not part of the toolbars anymore, there is no way to reset it as described. Well, the wuppdi Welcome Page options provide a checkbox for "Include Favorites in IDEInsight". It might help to just disable that one. -
F6 Search feature does not work anymore?
Uwe Raabe replied to PeterPanettone's topic in Delphi IDE and APIs
Perhaps the same as happened to me a while ago? When IDE Insight suddenly stops working… -
TFDBatchMoveSQLWriter and table structure updates
Uwe Raabe replied to Stéphane Wierzbicki's topic in Databases
OK, there is an undocumented option poSkipUnmatchedDestFields which you can set to False (although I don't know what it does). -
TFDBatchMoveSQLWriter and table structure updates
Uwe Raabe replied to Stéphane Wierzbicki's topic in Databases
Can't you just delete the table before executing the batch move? -
I always have the feeling of wasted with that.
-
MMX - Properties - Key bindings - Move Entity Down/Up
-
I guess I have no control over that. You can change the shortcuts for these functions, though.
-
Because a bug-reporting system is literally full of bugs.
-
Open Tools API - Project load/close notification
Uwe Raabe replied to Vincent Parrett's topic in Delphi IDE and APIs
BTW, may need to keep your IOTAProjectFileStorageNotifier implementation, because FileNotification is not fired during a file reload triggered by an external change (f.i. initiated by a VCS action). -
Open Tools API - Project load/close notification
Uwe Raabe replied to Vincent Parrett's topic in Delphi IDE and APIs
You should try IOTAIDENotifier registered with IOTAServices. Then in FileNotification check for NotifyCode = ofnFileOpening. This will be called for all files before they are opened, so you need to filter by extension. -
Alt-sortcuts are not always the same
Uwe Raabe replied to PeterPanettone's topic in Delphi IDE and APIs
The property/method responsible for that behavior is Vcl.Menus.TMenuItem.AutoHotkeys and/or Vcl.Menus.TMenuItem.RethinkHotkeys -
You can still connect these as long as both are inside the frame. If you want to connect buttons of the frame to action in the form: no, that must be done manually.
-
First, you should clarify how TMainForm and TMainFormBase are related, as well as TFrameBase and TFrameTop. Disregarding these inconsistencies I will try to outline my solution: You should avoid placing the frame instance into the form with the designer. Instead declare a field in TMainFormBase of type TFrameBase named Frame. Add a virtual class function CreateFrame returning a TFrameBase instance. During form creation call this function and set the field Frame with the result. Then in TMainFormApplication override that function and return a TFrameApplication.
-
That is the ICODE section (probably stands for initialization code).