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

研究会

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

〔559〕ACFinder への要望 Hidemi Oya (07/02/26 22:14)

〔566〕ACFinder ファイル変換速度の改善 Hidemi Oya (07/03/05 22:52)
〔567〕Re:ACFinder ファイル変換速度の改善 kabe (07/03/07 23:38)
〔568〕Re:ACFinder ファイル変換速度の改善 Hidemi Oya (07/03/08 0:38)
〔570〕Re:ACFinder ファイル変換速度の改善 kabe (07/03/08 23:19)

〔566〕ACFinder ファイル変換速度の改善
 Hidemi Oya WEB  (07/03/05 22:52)

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

 Excel ファイルの読み込みとデータベース変換ですが、プログレスバーへの表示を 20 回に1回くらいに限定すると、かなり高速になりますね。私の xls2db で試してみたところ、26 秒前後かかっていたのが、18 秒前後になりました。
 登録適用部は行数が多いので、20 回に1回程度なら、プログレスバーを表示しないときと大差ない時間で読み込み/変換が完了するようです。具体的には下記のような感じです。

(1) XBiff の OnProgress イベント
 if Progress mod 5 = 0 then ProgressBar1.Position := Progress;

(2) データベース変換ルーチン
var
 i, d: integer
begin
 // ここまで前処理部分
 ProgressBar1.Max := Rows; // Rows は読み込んだ Excel シートの行数
 d := Rows div 20;
 for i := 1 to Rows do begin
  // ここに変換処理
  if i mod d = 0 then ProgressBar1.Position := i;
 end;

〔567〕Re:ACFinder ファイル変換速度の改善
 kabe  (07/03/07 23:38)

引用なし
   >Hidemi Oyaさん

kabe です。
ありがとうございます。
次回に反映させます。

右クリックでのカレントセルの変更がうまくいかず、まだ修正版をアップできない状態です。(ポップアップメニューが出るタイミングによるのかカレントセルを変更できない場合がある)
なんとか今週末には修正版をアップしたいと思います。

〔568〕Re:ACFinder ファイル変換速度の改善
 Hidemi Oya WEB  (07/03/08 0:38)

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

 「20 回に1回」という表現は適切でなかったですね。プログレスバーを 20 分割したときの切れ目だけ表示するということです。
>kabe です。

>右クリックでのカレントセルの変更がうまくいかず、まだ修正版をアップできない状態です。(ポップアップメニューが出るタイミングによるのかカレントセルを変更できない場合がある)
 StringGrid の PopupMenu プロパティを空にして、OnMouseUp イベントでセル選択とメニューのポップアップを実行するってのじゃダメでしょうか? ついでに、OnKeyUp イベントでコンテキストメニューキーも処理する必要がありますが…。

procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 c, r:longint;
 p: TPoint;
begin
 if Button <> mbRight then Exit; // 右ボタン以外は無視
 StringGrid1.MouseToCell(X, Y, c, r); // マウスカーソル下のセル位置取得
 StringGrid1.Col := c; // 選択セル桁位置設定
 StringGrid1.Row := r; // 選択セル行位置設定
 // 選択セル右下位置をスクリーン座標に変換
 p := StringGrid1.ClientToScreen(StringGrid1.CellRect(c, r).BottomRight);
 PopupMenu1.Popup(p.X, p.Y); // マウス位置にメニューをポップアップ
end;

procedure TForm1.StringGrid1KeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
var
 p: TPoint;
begin
 if Key <> VK_APPS then Exit; // コンテキストメニューキー以外は無視
 // 選択セル右下位置をスクリーン座標に変換
 p := StringGrid1.ClientToScreen(StringGrid1.CellRect(StringGrid1.Col, StringGrid1.Row).BottomRight);
 PopupMenu1.Popup(p.X, p.Y); // マウス位置にメニューをポップアップ
end;

〔570〕Re:ACFinder ファイル変換速度の改善
 kabe  (07/03/08 23:19)

引用なし
   >Hidemi Oyaさん

kabe です。

> 「20 回に1回」という表現は適切でなかったですね。プログレスバーを 20 分割したときの切れ目だけ表示するということです。
了解です。こちらの方は修正済みです。
私の環境でxls->acis.db 変換が60秒くらいかかりますが(5つのファイル)、10秒前後は短くなるようです。

> StringGrid の PopupMenu プロパティを空にして、OnMouseUp イベントでセル選択とメニューのポップアップを実行するってのじゃダメでしょうか?
これで試してみます。

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