ewong
Members-
Content Count
28 -
Joined
-
Last visited
Community Reputation
3 NeutralTechnical Information
-
Delphi-Version
Delphi 10.3 Rio
-
Thanks Frickler. I'm testing out UniDAC but am struggling a bit. Will check out mORMot as well. Ed
-
Never mind... I'm just an idiot. Apparently it is only for Enterprise/Architect.
-
Hi, I'm using Delphi Pro 10.3 and am trying to set up a test program that can access a MongoDB server. I know that MongoDB is supported; but I'm confused why I see the FireDAC sample; but can't use it. I don't have FireDAC.Phys.MongoDB (and other items). I read and it seems as if Delphi Pro does have access to FireDAC's Mongo drivers. Mind you, the linked post is about 11.1 Delphi. So does 10.3 Pro have no access to MongoDB, or did I screwup the install of 10.3? Or is it only available to 11.1+? Any clarifications appreciated. Thanks Ed
-
Company is still using Dbase and I wish to move to SQL.
-
Nevermind... apparently it was supposed to be in the bin/ directory of Delphi. Sorry for the noise. Ed
-
Hi, Having finally gotten a new computer, I installed Delphi 12.0 and am in the process of installing my other packages. I installed BDEInstall for Delphi 12.0, but I am having trouble finding the BDE components. Now thinking about it, I suspect the BDEInstall for 12.0 *isn't* the BDE components install but the BDEAdmin install. I searched the web and came across a Delphi-Praxis link that states the BDE Components can be found in my.embarcadero.com. I don't see the BDEComp install anywhere. Can someone clarify where it is? I even searched https://cc.embarcadero.com/results.aspx?keywords=bde but getting Gateway timeout errors. Thanks Ed
-
I don't know if you'd believe this but I actually 'solved' (I think) my problem by going into the registry and taking a look at which path was used. As I had already a BDE installed before and installing the 10.3 BDE added a new Borland Shared in my Program Files directory. I went to HKLM\Software\Winw6432Node\Borland\Database Engine, and noticed that CONFIGFILE01 key was pointing to c:\ProgramData\Common Files\Borland\BDE\IDAPI.CFG, whereas DLLPATH was c:\program files (x86)\Common Files\Borland Shared\BDE. I removed the "Shared" and now both 10.2 and 10.3 can run. Planning to remove the Borland Shared directory in a bit after a bit of testing. Thanks Ed
-
Hi, I had to dig up an old XE project that required to access a DBF file. After installing the BDE installer for 10.3, and running the program, I came across the error $210C. According to [1], it means that 10.3 is picking up multiple versions of IDAPI32.dll. Since I also have dBasePlus installed, I probably do have multiple idapi32.dll. Is it possible to tell 10.3 to use a specific IDAPI32.dll file? Thanks Edmund [1] - http://www.delphigroups.info/2/08/355066.html
-
In hindsight and as an anecdotal instance of losing the plot, I just realized I could have just setup a popup menu and be done with it. ;/ That said, I have learnt a bit more so that wasn't a total waste. 😜 Edmund
-
In hindsight, I think that's what's making me confused. That said, I've found an indirect way in accordance to [3]. TCustDBGrid = class(TDBGrid) protected procedure MouseDown(Sender: TObject; Button: TMouseButton; ShiftState: TShiftState; X, Y: Integer); end; TForm1 = class(TForm) ... recentinfo: TDBGrid; .. protected procedure FindComponentClass(Reader: TReader; const ClassName: string; var ComponentClass: TComponentClass); Procedure ReadState(Reader: TReader); override end; procedure TCustDBGrid.MouseDown(Sender: TObject; Button: TMouseButton; ShiftState: TShiftState; X, Y: Integer); begin if (name = 'recentinfo') and (button = mbRight) then begin ShowMessage('testing'); end else inherited; end; procedure TForm1.FindComponentClass(Reader: TReader; const ClassName: string; var ComponentClass: TComponentClass); var i : integer; s : string; ts : TComponent; begin if ComponentClass = TDBGrid then begin ComponentClass := TCustDBGrid; end end; procedure TForm1.ReadState(Reader: TReader); begin Reader.OnFindComponentClass := FindComponentClass; inherited; end; The above 'hack' worked. At first I had tried to find the associated ComponentClass' instance name; only to have it dawn on me that it's just finding the component class. It hadn't instantiated the component yet so no instance exists. Then I just gave up and had all the DBGrids to be changed to TCustDBGrid on the fly and then use the TCustDBGrid mousedown dispatcher to run when the right instance is referenced. Thanks! Edmund
-
Delphi complains that it can't find "TCustDBGrid". So what I have is: TCustDBGrid = class(TDBGrid) protected procedure MouseDown(Sender: TObject; Button: TMouseButton; ShiftState: TShiftState; X, Y :integer); end; TForm1 = class(TForm) .. recentinfo: TDBGrid; .. end; implementation procedure TCustDBGrid.MouseDown(Sender: TObject; Button: TMouseButton; ShiftState: TShiftState; X, Y: integer); begin if button = mbRight then showmessage("testing"); end; From [1], I tried: constructor TForm1.create; begin recentinfo.onMouseDown = MouseDown; end; This didn't work as it's complaining that there's not enough parameters. Then I tried (as mentioned above) changing in the dfm text to change "recentinfo: TDBGrid;" into "recentinfo: TCustDBGrid". Since the definition of TCustDBGrid is in the same unit as the tform, I figured it would work. I'm guessing it's wrong thinking this way as what I'm doing is in essence using a visible component which uses a different set of rules than simple "TpointX = class(TPoint)" type of definition. If I just click on the grid, and create an event handler for "OnMouseDown", as mentioned in [2], it doesn't work as it fires only if I click on the headers. Then I came across [3] and while I think it should work, I haven't yet found out how to find out whether the componentclass' instance is what I wanted. Tbh, it would've been just simpler had I made this custom dbgrid as a package and be done with it; but I feel there has to be a way other than the package route. Thanks Edmund [1] - http://www.delphigroups.info/2/2f/507785.html [2] - http://www.delphigroups.info/2/4a/305663.html [3] - https://stackoverflow.com/questions/4685863/replacing-a-component-class-in-delphi/4686920#4686920
-
It's because I did use OnMouseDown but it was being ignored and I found out from [http://www.delphigroups.info/2/4a/305663.html] that it only works with the column headers. Thus my current issue.
-
Hi Dany, The first option isn't going to work as that'll affect other dbgrids. So I guess I'll need to use the second option even though it's a bit overkill for just this. I'm very surprised that even with TCustDBGrid defined within the same unit as the form, the dfm processing can't see that. Thanks Ed
-
Hi, I have added a DBGrid control on a form, and after fiddling with it, I realized I needed to override the MouseDown event. So I added a new Custom control and following the idea of http://www.delphigroups.info/2/f8/90624.html I thought changing the Text from MyGrid: TDBGrid to MyGrid: TCustDBGrid would work; but Delphi complains. If I click on ignore, it deletes the db control. If I have included the following code in the same unit as the form: TCustomDBGrid = class(TDBGrid) protected procedure MouseDown(Button: TMouseButton; ShiftState: TShiftState; X, Y: integer); end; Then if I change the DFM of the MyGrid from: MyGrid: TDBGrid; To: MyGrid: TCustDBGrid; It should work; but it doesn't, so I'm guessing I'm getting something wrong. What's the right way of doing this? Thanks Ed
-
I took up @Dalija Prasnikar's idea of threads and while the UI isn't hanging, there's a bunch of dependency control issues. Like in the thread when I disable the controls, I realized that I can't (by design) navigate a grid which depends on a dataset which had disablecontrol set. I'm now wondering if it makes sense two have two datasets. One which is linked to a grid, the other not linked to any control so that the thread can use that non-linked dataset leaving the grid-linked dataset available for use. But as it stands, it's a definite improvement but like all things I don't understand (threads), I'll need to read up on it. Again, Thanks for the help!! Very much appreciate it.