Delphi-Quellcode:
procedure TFormDynamicSearchDialog.LoadIni;
var
iniFile: TIniFile;
sec:
String;
begin
if FIniFile <> '
'
then
begin
sec := '
Search';
iniFile :=
nil;
try
iniFile := TIniFile.Create(FIniFile);
miSqlLinkCmdAnd.Checked := iniFile.ReadBool(sec, miSqlLinkCmdAnd.
Name, true);
miSqlLinkCmdOr.Checked := iniFile.ReadBool(sec, miSqlLinkCmdOr.
Name, false);
if miSqlLinkCmdAnd.Checked
then
FSqlLinkCmd := slcAnd
else if miSqlLinkCmdOr.Checked
then
FSqlLinkCmd := slcOr;
case iniFile.ReadInteger(sec, pcMain.
Name, 1)
of
0: tbFavourites.Click;
1: tbExpert.Click;
2: tbFavourites.Click;
end;
finally
if iniFile <>
nil then
iniFile.Free;
end;
end else
begin
// if no INI has been defined, set SQL link command as default here
miSqlLinkCmdAND.Checked := true;
FSqlLinkCmd := slcAnd;
end;
end;
Und bei dem "ShowModal" sollte man sich nicht verwirren lassen
Das muss ich aber glaub genauer erklären. Im Interface zur
Dll (
Unit-Name "DynamicSearchDialogDllInterface") gibt es eine Methode, die "ShowModal" heißt. Diese wiederum ruft die aus der
DLL exportierte Methode "ShowModal" auf (
Unit-Name "DynSearchDialog"). Und in dieser Methode wird dann das tatsächliche "ShowModal" des TForm-Objekts aufgerufen (
Unit-Name "DynamicSearchDialog"). D.h.
ShowModal wird tatsächlich nur einmal aufgerufen, allerdings gibt es davor noch andere Methoden, die halt exakt so heißen. Hat was mit der Integration zu tun, ich wollte halt nicht, dass alle Entwickler ihren Code anpassen müssen, wenn sie auf die
DLL umsteigen wollen; oder zumindest nur ganz gering anpassen müssen
Das Fehlerprotokoll zeigt eindeutig den rekursiven Aufruf von TDynamicSearchDialog.ShowModal und TFormDynamicSearchDialog.LoadIni.
Ausgelöst in TFormDynamicSearchDialog.LoadIni durch die Zeile "tbExpert.Click;".