- Details
- Written by: Stanko Milosev
- Category: dbExpress
- Hits: 6747
If you added DBXDynalink to your uses list, deployed:
dbxconnections.ini
dbxdrivers.ini
dbexpsda40.dll
Tried everything what is described here.
Then, try also:
ConnectionName = 'MYSQLCONNECTION'
DriverName = 'MySQL'
GetDriverFunc = 'getSQLDriverMYSQL'
LibraryName = 'dbexpmda.dll'
VendorLib = 'libmysql.dll'
- Details
- Written by: Stanko Milosev
- Category: dbExpress
- Hits: 6242
- Details
- Written by: Stanko Milosev
- Category: dbExpress
- Hits: 7034
Problem with dbExpress is that it does not raise an exception if anything is wrong in database (for example, if you try to add primary key which already exist). So, to get an exception, best would be to use OnReconcileError in TClientDataSet... Small example:
procedure Tdm.cdsReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
ShowMessage(e.Message);
end;
- Details
- Written by: Stanko Milosev
- Category: Web
- Hits: 12524
If you need to automate IE8, popup windows, then read this article
Window structure go like this:
Frame Tab,
TabWindowClass,
Shell DocObject View,
Internet Explorer_Server.
So, code would go something like this:
var
Wnd: HWND;
WndChild: HWND;
IE: iwebbrowser2;
begin
webBrowser.Quit;
try
Wnd := FindWindow('IEFrame', nil);
if Wnd = 0 then //No running instance of Internet Explorer so stop!
begin
showmessage('No Running instance of Internet Explorer');
exit;
end;
WndChild := FindWindowEX(Wnd , 0, 'Frame Tab', nil);
Wnd := FindWindowEX(WndChild, 0, 'TabWindowClass', nil);
Wnd := FindWindowEX(Wnd, 0, 'Shell DocObject View', nil);
Wnd := FindWindowEX(Wnd, 0, 'Internet Explorer_Server', nil);
if Wnd <> 0 then
begin
GetIEFromHWnd(Wnd, IE); //Get Iwebbrowser2 from Handle
Result := IE;
end;
except
on e: Exception do
ShowMessage('GetIE' + e.Message);
end;
end
function .GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
var
hInst: HWND;
lRes: Cardinal;
MSG: Integer;
pDoc: IHTMLDocument2;
ObjectFromLresult: TObjectFromLresult;
begin
hInst := LoadLibrary('Oleacc.dll');
@ObjectFromLresult := GetProcAddress(hInst, 'ObjectFromLresult');
if @ObjectFromLresult <> nil then
begin
try
MSG := RegisterWindowMessage('WM_HTML_GETOBJECT');
SendMessageTimeOut(WHandle, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
if Result = S_OK then
(pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE);
finally
FreeLibrary(hInst);
end;
end;
end;
I was using myCatch, to get windows structure.
This code which I left here is just to give you idea, I hope that soon I will upload example of automation IE6, IE7 and IE8...