D
DreamTiger
Unregistered / Unconfirmed
GUEST, unregistred user!
我编写了一个文本编辑器BBSSword,然后把它的快捷方式放到了
Sendto目录中。在浏览的时候,只选中一个文件,用“右键-〉
发送-〉BBSSword”,会自动启动我的程序,并打开文件,一切正常。
如果选中多个文件,用“右键-〉发送->BBSSword”时,跳出以下错误:
“Error reading Editor.HideSelection:
Cannot create form.No MDI Forms are currently active”
Editor是子窗口的编辑区(TRichEdit),HideSelection设成false。
这个程序如果发现有另外的实例正在运行,会把参数通过FileMap
传递给那个实例。参数传递是正确的。(因为忽略这个错误后,
选中的文件都能正确打开)。如果我先启动了我的程序BBSSword,
然后再发送,就不会出现这个错误。我搞不清楚到底是哪里出了错。
接受参数后打开子窗口的程序如下:
procedure TMainForm.rasOneInstComp1ReceiveParam(Sender: TObject);
var
i:integer;
begin
for i := 0 to rasOneInstComp1.Params.Count - 1 do
if FileExists(rasOneInstComp1.Params.Strings) then
OpenFile(rasOneInstComp1.Params.Strings);
end;
procedure TMainForm.OpenFile(filename:string);
begin
filename := UpperCase(filename);
with CreateMDIChild(filename) do
FileLoad(filename);
end;
procedure TMainForm.OpenFile(filename:string);
begin
filename := UpperCase(filename);
with CreateMDIChild(filename) do
FileLoad(filename);//FileLoad是TMDIChild的一个Procedure,打开一个文件。
end;
function TMainForm.CreateMDIChild(const Name: string):TMDIChild;
var
MDIChild:TMDIChild;
begin
Inc(OpenCount);
{ create a new MDI child window }
MDIChild := TMDIChild.Create(Self);
MDIChild.Caption := Name;
MDIChild.Tag := OpenCount;
boolFileTitleModified := false;
FileTitle.Text := Name;
CreateMDIChild := MDIChild;
end;
procedure TMDIChild.FileLoad(strFileName:string);
begin
if(not FileExists(strFileName)) then exit;
try
Screen.Cursor := crHourGlass;
Editor.Lines.LoadFromFile(strFileName);
strOpenPath := strFileName;
Caption := ExtractFileName(strFileName);
Editor.Modified := false;
Editor.SelStart := 0;
finally
Screen.Cursor := crDefault;
end;
end;
Sendto目录中。在浏览的时候,只选中一个文件,用“右键-〉
发送-〉BBSSword”,会自动启动我的程序,并打开文件,一切正常。
如果选中多个文件,用“右键-〉发送->BBSSword”时,跳出以下错误:
“Error reading Editor.HideSelection:
Cannot create form.No MDI Forms are currently active”
Editor是子窗口的编辑区(TRichEdit),HideSelection设成false。
这个程序如果发现有另外的实例正在运行,会把参数通过FileMap
传递给那个实例。参数传递是正确的。(因为忽略这个错误后,
选中的文件都能正确打开)。如果我先启动了我的程序BBSSword,
然后再发送,就不会出现这个错误。我搞不清楚到底是哪里出了错。
接受参数后打开子窗口的程序如下:
procedure TMainForm.rasOneInstComp1ReceiveParam(Sender: TObject);
var
i:integer;
begin
for i := 0 to rasOneInstComp1.Params.Count - 1 do
if FileExists(rasOneInstComp1.Params.Strings) then
OpenFile(rasOneInstComp1.Params.Strings);
end;
procedure TMainForm.OpenFile(filename:string);
begin
filename := UpperCase(filename);
with CreateMDIChild(filename) do
FileLoad(filename);
end;
procedure TMainForm.OpenFile(filename:string);
begin
filename := UpperCase(filename);
with CreateMDIChild(filename) do
FileLoad(filename);//FileLoad是TMDIChild的一个Procedure,打开一个文件。
end;
function TMainForm.CreateMDIChild(const Name: string):TMDIChild;
var
MDIChild:TMDIChild;
begin
Inc(OpenCount);
{ create a new MDI child window }
MDIChild := TMDIChild.Create(Self);
MDIChild.Caption := Name;
MDIChild.Tag := OpenCount;
boolFileTitleModified := false;
FileTitle.Text := Name;
CreateMDIChild := MDIChild;
end;
procedure TMDIChild.FileLoad(strFileName:string);
begin
if(not FileExists(strFileName)) then exit;
try
Screen.Cursor := crHourGlass;
Editor.Lines.LoadFromFile(strFileName);
strOpenPath := strFileName;
Caption := ExtractFileName(strFileName);
Editor.Modified := false;
Editor.SelStart := 0;
finally
Screen.Cursor := crDefault;
end;
end;