Hallo,
Ich habe eine Funktion in einer delphi
DLL in der ich einen Property-Dialog aufrufe:
Delphi-Quellcode:
FUNCTION nbEditAction( IDNum : INTEGER;
VAR Params : ARRAY OF PChar ) : BOOLEAN;
VAR
resultstr : String ;
BEGIN
Result := FALSE;
nbEditCount := nbEditCount+1;
CASE IDNum OF
1 : BEGIN
{ Anzeigen der Form... }
EditForm2 := TEditForm2.CreateParented( GetActiveWindow );
TRY
EditForm2.Caption := CmdParaName[1]+' Properties';
EditForm2.Edit1.Text := Params[0];
...
...
IF EditForm2.ShowModal = mrOK THEN
BEGIN
SetStr( Params[0], EditForm2.Edit1.Text );
...
...
Result := TRUE;
END;
FINALLY
EditForm2.Free;
END;
END;
END;
nbEditCount := nbEditCount-1;
END;
Nun kann es vorkommen das der Dialog bei schon geöffnetem ersten Dialog ein zweites Mal aufgerufen wird.
Das funktioniert nun nicht, da EditForm2 vom zweiten Dialog überschrieben wird und ich dann beim Schliessen des ersten Dialog eine
Access Violation bekomme. Mit nbEditCount erkenne ich zwar das ein Dialog erneut aufgerufen wird und könnte das mit einer Fehlermeldung verhindern. Aber wenn ich das zulassen möchte, wie bekomme ich das hin, das auch der erste Dialog noch funktioniert.
Grüsse,
Hans-Peter