過去の桐井戸端BBS (桐ver.8)
16915 フォームで列固定をしたい 宮田 2002/08/09-08:26
初めて投稿します。桐ver8(sp6)を使っています。
桐については初心者に近く、こういう所に投稿するのも経験が浅いので、
マナー違反があったらお許し下さい。

また、この内容は、よくここに投稿される「悲しげ」さんの掲示板にも書かせて
もらってあることをお断りしておきます。
さて、先だって過去ログ6028で一覧表形式フォームで列固定ができないかとい
うのを見ました。

僕もAcessではそれが出来ることを知り、この掲示板多での無理だろうとの皆さんのご意見にも関わらず、
ふとこんな方法ではどうだろうかと恐れも知らずに挑戦してみました。
結論から言うと、今のところ何とかうまくいってますが、なにせ素人が考えたことですから、
この先何か問題が出てくるかもしれません。

それにもうすぐ桐ver9が出そうですが、そうなると必要無くなるかもで、
今更という気もしますが。

で、その方法というのは、フォーム(勿論一覧表形式フォームです)にキーダウンイベントハンドラを作り、
そこで&仮想キーコードの値を調べ→,←,Enter,Tab,Home,Endなどのキーが押されたら、
スクロールしたい列の、項目名用ラベルオブジェクトの標題と、項目値用テキストオブジェクトのソースを(必要なら表示幅も)、
オブジェクト操作コマンドで書き換えてしまうのです。

僕の場合は標題やソース値を配列変数に入れておき、その要素番号をカーソルの位置に応じて変数で制御しました。
実証に使ったのは項目数12の表と、列数5の一覧表形式フォームで、ただ列を固定したのでは芸がないと思い、
フォームの両端の列に表の両端の項目を固定表示し、残りの3列をスクロールさせました。
動作としては表編集での列固定と全く同じで、ただ表編集と異なるのは両端が固定されていることです。

つまり、A,B,C,D,L→A,C,D,E,L→A,D,E,F,Lの様にスクロールします。(これならAcessでも出来ないだろう!)
その気になれば1列目,3列目,5列目といったとびとびの列の固定もたぶん可能だと思います。

一応、表示,訂正,項目訂正,行挿入,行追加の各モードで表編集と同じ動作をしてくれています。
(くれぐれも、今のところはですが)
プログラム的には、先のキーダウンイベントハンドラの他に入力用モードのための
ソース値更新イベントハンドラも必要で、そのモード状態を調べるために
更新モード取得メソッドも必要ですが、後は大したものは使っていません。

(と言うより、僕自信が初心者で詳しいことを知りません。)
フォームはメインしか使わないので絞り込みや並べ替えなど普通のフォームで
出来ることは当然全て可能です。

と、一応ここまでは来たのですが、今のところ問題点として、Enterキーが押された時のカーソル移動方向を変えられると、
動作がおかしくなってしまいます。
(例えば、列固定してない列なのに、Enterキーを押してもカーソルが右に移動せずにその場に留まり、
逆に画面の方が左にスクロールしていくとか ← 大笑いですね)

これについては、Enterキーが押され時のカーソル移動方向をプログラム内で取得できないので、
キーダウンイベントハンドラ内でカーソル移動方向を強制的に固定しています。

Enterキーに伴うカーソル移動方向の変更にも対応するためには、
いっそのことEnterキーが押された時のカーソル移動方向を選択する
コマンドボタンをフォームに設け、それによってカーソル移動方向を選択してもらうと共に、
その値によって移動方向を固定し、ケースコマンドで値に応じてスクロール処理を変えればよいと思うのですが、
仕事のこともありもうこれ以上時間をかけていられません。

HPも持っていないので作ったものをお見せすることも出来せんが、
よろしかったらどなたかこの後を引き継いでいただければ幸いです。

16930 Re:フォームでの列固定 悲しげ 2002/08/09-14:27
記事番号16915へのコメント
どもっ、宮田さん

>また、この内容は、よくここに投稿される「悲しげ」さんの掲示板にも書かせ
>てもらってあることをお断りしておきます。

あそこは、私(悲しげ)の掲示板ではなく、【多遊】さんの掲示板です。(^^;)
それと、あそこにも書きましたが、百の言葉(テキスト)で説明するよりも、
データ一式を(LZHに圧縮して)【多遊】さん宛にメールして下さい。
そうすれば【多遊】さんの方で(数日後になりますが)ダウンロードコーナーで公開してくれますので。
百聞は一見にしかず、です。
16953 Re:フォームでの列固定 宮田 2002/08/12-13:03
記事番号16930へのコメント
>あそこは、私(悲しげ)の掲示板ではなく、【多遊】さんの掲示板です。(^^;)

不注意で間違えてしまいました。
多遊さん、悲しげさん、ご迷惑をおかけして申し訳ありませんでした。

>それと、あそこにも書きましたが、百の言葉(テキスト)で説明するよりも、
>データ一式を(LZHに圧縮して)【多遊】さん宛にメールして下さい。そうすれ
>ば【多遊】さんの方で(数日後になりますが)ダウンロードコーナーで公開し
>てくれますので。百聞は一見にしかず、です。

アドバイス有難うございます。早速送らせて頂き、ダウンロードコーナーにのせて頂けました。
また、ここの主催者の幅田さんにも(多遊さんの掲示板の方で)アドバイスを頂き、有難うございました。

と、言うわけで、今回試作した「列固定式の一覧表フォーム」を、
多遊さんHPのダウンロードコーナーで紹介してもらっていますので、
興味をお持ちの方はそちらをご覧下さい。
(多遊さんのHPのURLについては、こういう所に勝手に書いてもいいのか解らないので省略させてもらいますが、
こちらにも何度も来ておられるようなので、ご本人の投稿の中にあると思います。)

今回作った作品はまだまだ不十分なものですが(僕の力ではこの辺りが限界です)、
桐を愛好されている皆様に少しでも役立てて頂ければ幸いです。



戻る