|
Hidemi Oya
(07/02/26 22:14)
|
|
|
|
kabe さん、こん**は。Hidemi Oya です。
ACFinder で指導資料を作成する際に、やはり行削除がもっと簡単にできないと不便です。複数行選択一括削除は今後の開発目標としても、Ctrl+Z 等のホットキーで行削除ができるようになるだけでも、かなり便利になります。ホットキーなら、それほどプログラムをいじらずに実装できると思うので、是非御一考ください。
なお、現在はキーボードのコンテキストメニューキーとZキーで代用していますが、マウスカーソルのある行を削除する現在の仕様では、意図しない行を削除してしまうことが多々あります。できれば、セレクトセルがある行を削除するように仕様変更し、マウスの右ボタン押下時にセレクトセルを変更するようにしてもらえるとありがたいです。
|
|
|
|
|
|
>Hidemi Oyaさん
kabe です。
ありがとうございます。
次回に反映させます。
右クリックでのカレントセルの変更がうまくいかず、まだ修正版をアップできない状態です。(ポップアップメニューが出るタイミングによるのかカレントセルを変更できない場合がある)
なんとか今週末には修正版をアップしたいと思います。
|
|
|
|
Hidemi Oya
(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;
|
|
|
|
Hidemi Oya
(07/03/08 23:07)
|
|
|
|
kabe さん、こん**は。Hidemi Oya です。
[#568] の動作確認をしている時にふと思ったんですが、選択セルが存在する行を削除するようにした場合、選択セルがスクロールアウトして現在の画面上で見えない状態だと、意図しない行を削除してしまう可能性がありますね。選択セルがスクロールアウトしている場合は、行データを表示して削除するかどうかを確認するダイアログボックスを出すようにした方が良さそうです。
選択セルが表示画面内に存在するかどうかは、TStringGrid の TopRow, LeftCol, VisibleRowCount, VisibleColCont プロパティで簡単に判定できます。
|
|
|
|
|
|
>Hidemi Oyaさん
kabe です。
> 「20 回に1回」という表現は適切でなかったですね。プログレスバーを 20 分割したときの切れ目だけ表示するということです。
了解です。こちらの方は修正済みです。
私の環境でxls->acis.db 変換が60秒くらいかかりますが(5つのファイル)、10秒前後は短くなるようです。
> StringGrid の PopupMenu プロパティを空にして、OnMouseUp イベントでセル選択とメニューのポップアップを実行するってのじゃダメでしょうか?
これで試してみます。
|
|
|
|
|
|