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

研究会

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

〔923〕ACFinder 081124test(Portable)版
 kabe  (08/11/24 21:43)

引用なし
   kabeです。

ACFinder 081124test(Portable)版を作成しました。
http://acfinder.kabe.info/

USBメモリー等で持ち運んで使う場合を想定して以下の仕様変更を行っています。
ポータブル版といえる物ですが、次の正式版からはこれを標準にしようと思います。

データベースフォルダは acfinder.exe 下の DBフォルダ固定となります。
INIファイルは acfinder.exe と同じ場所に作成します。

JPP-NETの剤の概要と有効成分CSVファイルからデータを読み込み、別データベースとして jpp.db を作成するようにしました。jpp.db があれば起動時にアタッチします。
読み込みは、あらかじめ、JPP-NETからCSVファイルをダウンロードして、データ更新ダイアログから、拡張機能を選択してください。

テーブル名は
剤の概要 jppSeizai
有効成分 jppSeibun
となります。
SQLタブで
select * from jppSeizai
select * from jppSeibun
でデータを確認できます。
フィールド名は
pragma table_info('jppSeizai')
pragma table_info('jppSeibun')
で確認してください。

jppSeibun が存在すれば、薬剤タブの有効成分グリッドは jppSeibun から作成します。
・ツリー全体表示

〔922〕ACFinder で acis.db が削除できないのは
 Hidemi Oya WEB  (08/10/30 0:30)

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

 何度か acis.db が削除できないケースに遭遇しましたが、想定外のエラー発生時などで、TAcisDb オブジェクトを Free してないのに、TAcisDb.Create を実行して多重に acis.db を開いちゃってるのではないかという感じがします。あとから開いた TAcisDb オブジェクトを Free しても、前の TAcisDb オブジェクトが acis.db をつかんだままなので削除できないのではないかと…。

 とりあえず、全ての
AcisDb := TAcisDb.Create(...);
の直前に
AcisDb.Free;
を入れてみてはどうでしょう?
・ツリー全体表示

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

引用なし
   >Hidemi Oyaさん

kabe です。

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

ありがとうございます。
これでうまくいきました。
・ツリー全体表示

〔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 を使うのが最も簡単ってことに落ち着きました。これでも、プログラム内でファイル名の管理をしたり、作成したファイルの後始末をする必要がないので、現在の方法よりはスッキリすると思います。
・ツリー全体表示

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

引用なし
   補足です。

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

〔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;
・ツリー全体表示

〔917〕TAdvStringGrid が良さそう
 Hidemi Oya WEB  (08/09/27 23:52)

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

>>NextGrid(http://www.bergsoft.net/component/next-grid/overview.htm)を使ったバージョンも試してみてますが、高機能過ぎて使い方がよくわかりません。
> 私も見てみます。
 NextGrid は、見栄えは良いけど、今回の用途にはどうなのかなあという感じがしました。
 TAdvStringGrid を使ってみましたが、これはなかなか良さそうです。ライセンスはフルソース付きのコマーシャルユースのみとなっているので、dcu のみで商利用じゃなければフリーソフト扱いなのかな? どこ見ても、非商利用/ソース無しの記述が見あたりません。
・ツリー全体表示

〔916〕Re:ACFinder への面倒な(^_^;)要望
 Hidemi Oya WEB  (08/09/27 20:29)

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

>ちょっと、やってみましたが、TWMPrintClient がなく、コンパイルできませんでした。
 TWMPrint は Message.dcu にあると思いますので、下記を追加すれば OK だと思います。インストールは PageExtControl.pas だけで OK で、このソースで uses されている ListViewExt は使われてないのでコメントアウトして大丈夫です。

const
{$EXTERNALSYM WM_PRINTCLIENT}
WM_PRINTCLIENT   = 792;

type
TWMPrintCilent = TWMPrint;

>TSortGrid は少し試してみました。プロポーショナルスクロールバーを実現するコードを流用してます。(まだ不完全なんですけど)
 デモプログラムはなかなか良さそうな感じですね。ソート時にフィックスドセルに昇順/降順のビットマップが貼り付きますし。ただ、サーチとフィルターは、期待していたものとはちょっと違うかも…。

>NextGrid(http://www.bergsoft.net/component/next-grid/overview.htm)を使ったバージョンも試してみてますが、高機能過ぎて使い方がよくわかりません。
 私も見てみます。

 MultiStringGrid については、下記の TIntegerList も必要でした。おまけに、TIntegerList が入っているユニット名とファイル名、さらにそれを uses しているユニット名がバラバラです。とりあえず、この3つは名前を揃える必要があります。
 で、試してみたんですが、AdjustColWidth (これもメソッド名が AdjustColHeight と間違ってます)は OK ですが、AdjustRowHeight (こちらのメソッド名も AdjustRowWidth と間違っています)はダメでした。何か条件があるん9かなあ?
・ツリー全体表示

〔915〕Re:ACFinder への面倒な(^_^;)要望
 Hidemi Oya WEB  (08/09/27 20:06)

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

>いや、私もいつまで ACFinder のメンテができるかわかりません。
 お互い、五十路が目前になってきましたからねえ(^_^;)。立場の問題もありますし、体調の問題もありますし…。夏場は現場作業が多いこともあるのですが、最近はすっかり夜更かしができなくなってきました。おまけに、7〜8月は頸椎ヘルニアから来る左肩〜上腕部の神経痛と左手〜下腕部のしびれに悩まされ、さんざんです。

>気の向くままにって感じなんですが、とりあえず、任意項目検索機能を12末頃まで付けることを自分の目標とします。
 無理しない程度でお願いします。

>まあ、確かにそうですね。段階的な絞り込みとか、絞り込みを一段解除するとか、どうやって管理したらいいのかなと思ってたんですが、絞り込みのレベルごとに、テンポラリテーブルを作成して管理すればいいのかな。
 前のアーティクルを書いたときはそう考えてたんですが、絞り込むたびに新しい結果タブを作っていくのでも良いかなという感じもしてきました。タブがどんどん増えていきますが、こちらの方が行きつ戻りつが便利かも…。
・ツリー全体表示

〔914〕Re:ACFinder への面倒な(^_^;)要望
 kabe  (08/09/27 10:22)

引用なし
   >Hidemi Oyaさん

kabe です。

> 下記にある PageExtControl が良さそうですね。クローズボタンはあるし、ドラッグ&ドロップによるタブの位置変更にも対応しています。さすがに、New タブボタンはありませんが…。D7 版のみなので D6P にインストールできるかどうかは不明です。
ちょっと、やってみましたが、TWMPrintClient がなく、コンパイルできませんでした。

> あと、StringGrid については、下記の TSortGrid が結構良さそうです。フィックスドセルにボタンは付きませんが…。
TSortGrid は少し試してみました。プロポーショナルスクロールバーを実現するコードを流用してます。(まだ不完全なんですけど)
NextGrid(http://www.bergsoft.net/component/next-grid/overview.htm)を使ったバージョンも試してみてますが、高機能過ぎて使い方がよくわかりません。
・ツリー全体表示

〔913〕Re:ACFinder への面倒な(^_^;)要望
 kabe  (08/09/27 10:00)

引用なし
   >Hidemi Oyaさん

kabe です。

>あんまり遠い将来でも困りますけど…。
いや、私もいつまで ACFinder のメンテができるかわかりません。
気の向くままにって感じなんですが、とりあえず、任意項目検索機能を12末頃まで付けることを自分の目標とします。

> メインウィンドウじゃなく、Test 版のような結果表示ウィンドウは別窓に表示して、その中に結果タブをいくつも作れるというのでも良いですけど。
当面はこの方式の完成を目標とします。

> テンポラリテーブルを使って絞り込んでいくなら、汎用性はいらないんじゃないかと…。しかも、チェックリストボックスで選択するなら、
>create temp tbl2 as select * from tbl1 where target_field in (selected_list)
>ですんじゃいます。
まあ、確かにそうですね。段階的な絞り込みとか、絞り込みを一段解除するとか、どうやって管理したらいいのかなと思ってたんですが、絞り込みのレベルごとに、テンポラリテーブルを作成して管理すればいいのかな。
・ツリー全体表示

〔912〕薬検 CSV データが修正されました
 Hidemi Oya WEB  (08/09/26 20:15)

引用なし
    本日公開のデータから、薬検 CSV 登録基本部の濃度データのバグが修正されました。
・ツリー全体表示

〔911〕Re:ACFinder への面倒な(^_^;)要望
 Hidemi Oya WEB  (08/09/26 1:20)

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

> FormPanel を使えば、割と簡単だと思います。が、タブ型だとタブごとにクローズボタンが付いている方が使いやすいとか、新規タブ作成ボタンがタブエリアにあった方が使いやすいとかってことで、これらが実装された TabCopntrol も欲しくなりますね。
 下記にある PageExtControl が良さそうですね。クローズボタンはあるし、ドラッグ&ドロップによるタブの位置変更にも対応しています。さすがに、New タブボタンはありませんが…。D7 版のみなので D6P にインストールできるかどうかは不明です。
http://www.torry.net/pages.php?id=164

あと、StringGrid については、下記の TSortGrid が結構良さそうです。フィックスドセルにボタンは付きませんが…。
 TAdvStringGrid はもっと凄いですが、$112 はちょいと高い(^_^;)。シェアウェアなのはソースだけかな?
http://www.torry.net/pages.php?id=114
・ツリー全体表示

〔910〕Re:ACFinder への面倒な(^_^;)要望
 Hidemi Oya WEB  (08/09/25 23:34)

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

>機能としては欲しいですね。
 すぐにって訳じゃないですが、将来目標としてぜひぜひよろしく。あ〜、でも将来といっても、我々もだんだんロートルと言われる年齢に近くなってきましたから(爆)、あんまり遠い将来でも困りますけど…。

>現状が ACFinder 1 とすると ACFinder 2 の目標としては、任意の検索タブをいくつでも作れる。任意の項目で絞り込みができるといったあたりでしょうか。
 メインウィンドウじゃなく、Test 版のような結果表示ウィンドウは別窓に表示して、その中に結果タブをいくつも作れるというのでも良いですけど。

>これを ACFinder にも取り入れたいと思ったんですが、汎用性のあるSQLを生成する部分でめんどうそうでまだ手をつけていません。
 テンポラリテーブルを使って絞り込んでいくなら、汎用性はいらないんじゃないかと…。しかも、チェックリストボックスで選択するなら、
create temp tbl2 as select * from tbl1 where target_field in (selected_list)
ですんじゃいます。

>グリッドの各ヘッダの右端に■マークのようなものを付けて、そこでクリックイベントを発生させられるコンポーネントがあるといいんですが。
 国産ではなさそうですね。海外を探さなきゃかな。あるいは、下記の方法で強引にビットマップボタンを貼り付けちゃうとか…。
http://sciencesystem.g.hatena.ne.jp/bbs/2
 ヘッダのシングルクリックでソート、ダブルクリックで絞り込みとかなら、下記の MultiStringGrid が使えそうです。ソートは自前で実装する必要がありますが、列幅や行の高さを自動調節してくれるスグレモノです。
http://yozda.exblog.jp/i21

>タブ切り替え型ですが、現状の各タブに相当するフォームを作成しておき、メインフォーム側で FormPanel を動的に生成し、はめ込めば、なんとか形になりそうな気がします。
 FormPanel を使えば、割と簡単だと思います。が、タブ型だとタブごとにクローズボタンが付いている方が使いやすいとか、新規タブ作成ボタンがタブエリアにあった方が使いやすいとかってことで、これらが実装された TabCopntrol も欲しくなりますね。
・ツリー全体表示

〔909〕Re:OOo: ウィザード無しで CSV ファイルを...
 kabe  (08/09/25 22:30)

引用なし
   >Hidemi Oyaさん

kabe です。

> ひとつ書き忘れてました。些末的なことですが、OOo Calc では、LoadComponentFromURL のパラメータとして DocumentTitle を渡すと、任意のタイトルを設定できるようです。
Calc で HTMLファイル読込時に temp1 とか表示されると、なんとなくかっこわるいのでこれは使えます。
・ツリー全体表示

〔908〕Re:OOo: ウィザード無しで CSV ファイルを...
 Hidemi Oya WEB  (08/09/25 22:16)

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

>いや〜、これは豊富な情報量です。
 OOo のテンポラリファイルの使い方とか、OOo BASIC ですが、非常に参考になるアーティクルが多いです。

>それにしても FilterOptions の指定って、普通こんなのわかりません。
 まったくですね。OpenSource なんだから、ソースを見れば良いって話はありますが、これだけの規模のアプリケーションのソースから必要なところを探すってのはなかなか(^_^;)。

 ひとつ書き忘れてました。些末的なことですが、OOo Calc では、LoadComponentFromURL のパラメータとして DocumentTitle を渡すと、任意のタイトルを設定できるようです。詳細はこちら。ここも、公式サイトなので当然ですが、情報量は豊富です。でも、FilterOption の詳細までは載ってません(^_^;)。
http://api.openoffice.org/docs/common/ref/com/sun/star/document/MediaDescriptor.html#DocumentTitle
・ツリー全体表示

〔907〕Re:OOo: ウィザード無しで CSV ファイルを...
 kabe  (08/09/25 21:48)

引用なし
   >Hidemi Oyaさん

kabe です。

>http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FCalc%2FCSV
いや〜、これは豊富な情報量です。
それにしても FilterOptions の指定って、普通こんなのわかりません。

OOo Basic の方も興味あったので、参考になります。
・ツリー全体表示

〔906〕Re:OOo: ウィザード無しで CSV ファイルを...
 Hidemi Oya WEB  (08/09/25 21:32)

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

>「下記」のURLを教えてください。
 すみません、貼るのを忘れてたようです(^_^;)。ここです。
http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FCalc%2FCSV

 ちなみに、ここのコンテンツは今回の用途に役立つものが多いですね。ストリームデータを読む方法などもあります。

>出力はHTMLに統一した方が楽でもありますね。
>そうすると Excel拡張Gridを使う必然性もなくなるし。
 そうですね。Excel からの入力は WBiff だし、HTML 出力は自前ルーチンになってるので、StringGrid はどんなものでも使えるようになりますね。フィルター機能付きグリッドコンポーネントとかあるのかな?
・ツリー全体表示

〔905〕Re:ACFinder への面倒な(^_^;)要望
 kabe  (08/09/25 21:32)

引用なし
   >Hidemi Oyaさん

kabe です。

機能としては欲しいですね。
現状が ACFinder 1 とすると ACFinder 2 の目標としては、任意の検索タブをいくつでも作れる。任意の項目で絞り込みができるといったあたりでしょうか。

> Excel のオートフィルターのような選択方式よりは、たとえば「適用病害虫雑草名」の列(あるいはヘッダ)で右クリックして「絞り込み」を選択すると、病害虫選択ダイアログが表示されて複数の病害虫を選択できるようになっている方が使いやすいと思います。
SQLite の GUIツールか、グリッドコンポーネントで、ヘッダのマーク部分をクリックすると、そのカラムのデータが単一化されたチェックリストボックスが現れて、絞り込みができるものを見たことがあるんですが、何か忘れてしまいました。
これを ACFinder にも取り入れたいと思ったんですが、汎用性のあるSQLを生成する部分でめんどうそうでまだ手をつけていません。

> なお、検索結果の別窓表示でも絞り込みはできた方が便利なので、可能ならばグリッドコンポーネント側に検索機能を付けるのがベストかもしれません。これが面倒なら、グリッドの内容からテンポラリテーブルを作成して、そこから絞り込んでいくという手もあります。
コンポーネントはいじれそうもないので、検索は SQL でやるしかないかと。
グリッドの各ヘッダの右端に■マークのようなものを付けて、そこでクリックイベントを発生させられるコンポーネントがあるといいんですが。

> 後者の場合、TStringGrid.Handle をテンポラリテーブル名に使用すれば、テンポラリテーブル名が重複することもありませんし、タブ型に切り替えてもプログラムを書き替える必要はありません。
なるほど。

タブ切り替え型ですが、現状の各タブに相当するフォームを作成しておき、メインフォーム側で FormPanel を動的に生成し、はめ込めば、なんとか形になりそうな気がします。
・ツリー全体表示

〔904〕Re:OOo: ウィザード無しで CSV ファイルを...
 kabe  (08/09/25 20:25)

引用なし
   >Hidemi Oyaさん
kabe です。

> 別件でいろいろ探してたら、OOo で CSV をウィザード無しで開く方法が見つかりました。下記の「CSV インポート」をご覧ください。
「下記」のURLを教えてください。

> とはいえ、現状の HTML で開いてもらう方が、データ日付も入って使いやすいですけどね。どちらかというと、Excel も HTML をインポートするか、CSV にデータ日付を追加してもらった方がありがたいかな…。
出力はHTMLに統一した方が楽でもありますね。
そうすると Excel拡張Gridを使う必然性もなくなるし。
・ツリー全体表示

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