OSDN Git Service

・入力アシスタント設定に差分登録機能を追加
[gikonavigoeson/gikonavi.git] / ThreadSearch.pas
index bf7f485..db30e1c 100644 (file)
@@ -64,6 +64,8 @@ type
     { Private \90é\8c¾ }
     BbsNmList: TStringList;
     BbsIdList: TStringList;
+    CmPath: String;
+    CmUrl: String;
 
     procedure AddHistory;
     function KWEncode(const KWSrc: String): String;
@@ -100,6 +102,9 @@ uses GikoSystem, GikoDataModule, MojuUtils, BoardGroup;
 {$R *.dfm}
 
 procedure TThreadSrch.FormCreate(Sender: TObject);
+var
+    PathLen: Integer;
+    Sep: Integer;
 begin
     BbsNmList := TStringList.Create;
     BbsIdList := TStringList.Create;
@@ -119,6 +124,34 @@ begin
     ResultList.Column[2].Width := GikoSys.Setting.ThrdSrchCol3W;
     ResultList.Column[3].Width := GikoSys.Setting.ThrdSrchCol4W;
     CmbKW.Items.AddStrings(GikoSys.Setting.ThrdSrchHistory);
+
+    SetLength(CmPath, 1024);
+    PathLen := GetTempPath(1024, PAnsiChar(CmPath));
+    if (PathLen > 0) then begin
+        SetLength(CmPath, PathLen);
+        if (CmPath[PathLen] <> '\') then
+            CmPath := CmPath + '\';
+        CmPath := CmPath + 'gikonavi';
+        ForceDirectories(CmPath);
+        CmPath := CmPath + '\cm.html';
+        CmUrl := CmPath;
+        while (True) do begin
+            Sep := Pos('\', CmUrl);
+            if (Sep < 1) then
+                Break;
+            CmUrl[Sep] := '/';
+        end;
+        while (True) do begin
+            Sep := Pos(' ', CmUrl);
+            if (Sep < 1) then
+                Break;
+            Delete(CmUrl, Sep, 1);
+            Insert('%20', CmUrl, Sep);
+        end;
+        CmUrl := 'file://' + CmUrl;
+    end else begin
+        CmPath := '';
+    end;
 end;
 
 procedure TThreadSrch.BtnSearchClick(Sender: TObject);
@@ -152,7 +185,7 @@ var
     Board: String;
 begin
     ResultList.Clear;
-    CmBrowser.Navigate('about:blank');
+//    CmBrowser.Navigate('about:blank');
 
     Screen.Cursor := crHourGlass;
 
@@ -376,8 +409,10 @@ end;
 
 procedure TThreadSrch.SetCm(Content: string);
 var
-       doc: OleVariant;
+//     doc: OleVariant;
+    Html: TStringList;
 begin
+(*
        if Assigned(CmBrowser.ControlInterface.Document) then begin
                doc := OleVariant(CmBrowser.Document);
                doc.Clear;
@@ -388,6 +423,22 @@ begin
     end else begin
         MessageList.Items.Add('CM\95\\8e¦\83G\83\89\81[\94­\90¶');
        end;
+*)
+    if (CmPath = '') then begin
+        MessageList.Items.Add('CM\95\\8e¦\83G\83\89\81[\94­\90\81F\88ê\8e\9e\83p\83X\8eæ\93¾\8e¸\94s');
+    end else begin
+        Html := TStringList.Create;
+        try
+            Html.Text := Content;
+            Html.SaveToFile(CmPath);
+            CmBrowser.Navigate(CmUrl);
+        except
+            on E: Exception do begin
+                MessageList.Items.Add('CM\95\\8e¦\83G\83\89\81[\94­\90\81F' + E.Message);
+            end;
+        end;
+        Html.Free;
+       end;
 end;
 
 function TThreadSrch.HTMLEncode(const HTML: string): String;
@@ -591,7 +642,7 @@ begin
     ChkBbsClick(ChkBbs);
     PnlBbsName.Caption := '';
     PnlBbsId.Caption := '';
-    CmBrowser.Navigate('about:blank');
+//    CmBrowser.Navigate('about:blank');
 
     PopMenuBbs.Items.Clear;
     BbsNmList.Clear;