Laboratory of Mobile Agricultural Chemicals Searcher
携帯農薬検索実験室

研究会

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
19 / 114 ツリー <前へ | 次へ>

〔897〕ACFinder 080923test版 kabe (08/09/23 19:28)

〔898〕Re:ACFinder 080923test版 Hidemi Oya (08/09/23 21:59)
〔899〕Re:ACFinder 080923test版 Hidemi Oya (08/09/24 21:24)
〔900〕サンプル見っけ! Hidemi Oya (08/09/24 22:02)
〔918〕OOo: ファイルを作らずに Calc を開く Hidemi Oya (08/10/01 22:41)
〔919〕Re:OOo: ファイルを作らずに Calc を開く Hidemi Oya (08/10/02 0:49)
〔920〕Re:OOo: ファイルを作らずに Calc を開く Hidemi Oya (08/10/04 10:29)
〔921〕Re:OOo: ファイルを作らずに Calc を開く kabe (08/10/05 20:12)

〔898〕Re:ACFinder 080923test版
 Hidemi Oya WEB  (08/09/23 21:59)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

作物&病害虫ダイアログで、右ボタン押下で選択機能も付けていただき、ありがとうございます。

>検索結果グリッドを別窓に表示する機能を付けました。
>動作確認お願いします。
 薬剤タブから別窓を開くと、ちゃんと有効成分ごとのデータも表示されるようになっているのには驚きました。メインウィンドウからはツールバーだけじゃなく、ポップアップメニューからも別窓が開けるのが良いですね。また、別窓からは、Excel/Calc や HTML ウィンドウも起動できるようになっているし、Google/Weblio や残留基準も検索できるようになっているし、列削除/行削除もできるし…ほぼ完璧じゃないでしょうか。
 欲を言えば、窓ごとに行数と選択モードをそれぞれ設定できると、より使いやすくなると思います。それと、別窓でもポップアップメニューにツールバーの機能が入っていると良いですね。
 さらに、別窓からメインウィンドウの薬剤タブで検索が実行できれば、もう何にも言うことはありません。別窓の AOwner はメインウィンドウになっているようですから、Owner プロパティを使えば可能だと思います。

>ただし、OOo(StarSuite)Calc で開く場合は、オンメモリで OOo に HTMLソースを読む方法がわからず、一時ファイルを作成します。
 ちょっと調べてみましたが、見あたりませんね。LoadComponentFromURL の URL に 'private:clipboard' とか、あるいはプロパティに InStream とかあれば良いんですが…。
 でも、Calc をいくつでも開けるようにしてもらってるので、このままでも支障はなさそうです。

>将来的には、タブ切替型ブラウザのようなイメージで、タブの種類を選択して新しいタブをいくつでも作成できる方がスマートかなと思ってます。
 好みで言わせてもらえば、私はタブ型の方が使いやすくて好きです。今だとタスクバーにいっぱい ACFinder のアイコンができちゃいますし。
 ただ、結果ウィンドウと HTML ウィンドウは別窓で、それぞれのウィンドウにタブを増やしていくのなら、それほど難しくはなさそうです。が、結果ウィンドウで上に書いたように行数と選択モードをそれぞれに設定するのは、ちょっと面倒になりそうですね。

〔899〕Re:ACFinder 080923test版
 Hidemi Oya WEB  (08/09/24 21:24)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

> ちょっと調べてみましたが、見あたりませんね。LoadComponentFromURL の URL に 'private:clipboard' とか、あるいはプロパティに InStream とかあれば良いんですが…。
 LoadComponentFromURL のプロパティに InputStream というのがあるので、この値として com::sun::star::io::XInputStream オブジェクトを指定してやれば、ストリームデータを渡せそうな感じです。が、XinputStream オブジェクトに値を設定する方法と、この場合の URL に何を指定すればよいのかが不明です(^_^;)。
 あとは、URL に file:///con を指定して、Desktop オブジェクトの標準入力にデータを渡すという方法もありそうなんですが、Desktop オブジェクトのプロセスハンドルの取得方法が不明のため、リダイレクトできません(^_^;)。
 ただ文字列データを渡すだけってのが、何でこんなに難しいのか…。

〔900〕サンプル見っけ!
 Hidemi Oya WEB  (08/09/24 22:02)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

 OO Basic ですが、ストリームデータで LoadComponent するサンプルが下記にありました。暇なときに、Delphi で試してみます。
http://www.oooforum.org/forum/viewtopic.phtml?t=43637

〔918〕OOo: ファイルを作らずに Calc を開く
 Hidemi Oya WEB  (08/10/01 22:41)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

 Pipe を使えば HTML ファイルを保存せずに Calc を開くことができそうですが、今のところ上手くいきません。Pump も併用しないとだめなようです。
 とりあえず OOo の一時ファイルを使って、HTML ファイルを保存せずに Calc を開けるようにはなりましたので、紹介しておきます。

var
OpenOffice, OpenDesktop, oStream, Params : Variant;
html: string;
begin
Screen.Cursor := crHourGlass;
try
OpenOffice := CreateOleObject('com.sun.star.ServiceManager');
Params := VarArrayCreate([0, 2], varVariant);
Params[0] := OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
Params[0].Name := 'FilterName';
Params[0].Value := 'calc_HTML_WebQuery';
Params[1] := OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
Params[1].Name := 'DocumentTitle';
Params[1].Value := 'Title'; // ここにドキュメントのタイトルを記述
Params[2] := OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
Params[2].Name := 'InputStream';
Params[2].Value := OpenOffice.createInstance('com.sun.star.io.TempFile');
// Params[2].Value := OpenOffice.createInstance('com.sun.star.io.Pipe');
oStream := OpenOffice.createInstance('com.sun.star.io.TextOutputStream');
oStream.setOutputStream(Params[2].Value);
oStream.setEncoding('Shift_JIS');
oStream.writeString(html); // ここに HTML が入った文字列を指定
oStream.closeOutput;
Params[2].Value.seek(0); // Pipe を使う場合はコメントアウトすること
OpenDesktop := OpenOffice.createInstance('com.sun.star.frame.Desktop');
OpenDesktop.LoadComponentFromURL('private:stream', '_blank', 0, Params);
finally
Screen.Cursor := crDefault;
end;
end;

〔919〕Re:OOo: ファイルを作らずに Calc を開く
 Hidemi Oya WEB  (08/10/02 0:49)

引用なし
   補足です。

> とりあえず OOo の一時ファイルを使って、HTML ファイルを保存せずに Calc を開けるようにはなりましたので、紹介しておきます。
 一時ファイルは、OpenOffice が勝手に掃除してくれます。

〔920〕Re:OOo: ファイルを作らずに Calc を開く
 Hidemi Oya WEB  (08/10/04 10:29)

引用なし
   > Pipe を使えば HTML ファイルを保存せずに Calc を開くことができそうですが、今のところ上手くいきません。Pump も併用しないとだめなようです。
 Pump を併用してもダメでした。[#900] のサンプルは、Storage を使っているから大丈夫なのかな? しかし、このサンプル複雑すぎてよく分かりません(^_^;)。

 Pipe と TempFile は、ファイルを作るかどうかという内部動作に大きな違いはありますが、外部へのインターフェースとしては XSeekable があるかどうかの違いしかありません。で、Pipe の InputStream を TextInputStream にセットすると、Seek しなくてもちゃんと
 while not isEOS do StringList.Add(TextInputStream.readLine);
で Pipe の OutputStream に書き出した内容を読むことができます。ということは、TempFile と全く同じ方法で Pipe からもデータを読んでくれないとおかしいということになるんですが…。
 しかし、いろいろ試しても Pipe の InputStream を loadComponentFromUrl に渡しても内容が表示されることはありませんでした。

 ということで、[#900] のサンプルのようなややこしいことをするくらいなら、単純に TempFile を使うのが最も簡単ってことに落ち着きました。これでも、プログラム内でファイル名の管理をしたり、作成したファイルの後始末をする必要がないので、現在の方法よりはスッキリすると思います。

〔921〕Re:OOo: ファイルを作らずに Calc を開く
 kabe  (08/10/05 20:12)

引用なし
   >Hidemi Oyaさん

kabe です。

> とりあえず OOo の一時ファイルを使って、HTML ファイルを保存せずに Calc を開けるようにはなりましたので、紹介しておきます。

ありがとうございます。
これでうまくいきました。

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
19 / 114 ツリー <前へ | 次へ>
ページ:  ┃  記事番号:   
(SS)C-BOARD vv3.8 is Free.