今、VB6で、階層フレキシブルグリッドコントロール(MSHFLEXGRID)を
使用して、ADOデータコントロール(ADODC)で接続した、
ODBCデータベースのデータを表示させています。

その表示されたセルをクリックすることで、横1行データを選択して、
変更用フォームにデータをコピーさせているのですが、
垂直方向のスクロールをしていない状態と
スクロールさせた状態で、クリックした位置(プロパティMouseRowを使用)が
違うのです。
具体的には、データ件数40件で、最大表示30件の状態で、以下のようでした。

『スクロール前』  クリック位置  MouseRowの値
           項目欄      0
           1行目      0
           2行目      1
          20行目     19
          35行目    クリックせず
          40行目    クリックせず
            欄外    クリックせず

『スクロール後』
           項目欄      0
           1行目      1
           2行目      2
          20行目     20
          35行目     35
          40行目     40
            欄外     40

また、表示件数15件だと、まったく『スクロール前』の状態でしたが、
別の日付のデータでスクロールをさせると、『スクロール後』の状態に
なりました。

どうも、ADODCを使用すると、こうなるらしいのですが、
対策を教えていただけませんか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

そうですかー。

ならばMSHFlexGridを使用せざるをえないですね。。。

要はクリックした正確な位置を取得したいのですよね?

回避方法ですが
1.Private宣言により変数2つを宣言
2.マウスダウンのイベントでMouseRow/MouseColを取得し、Private宣言した変数にセット
3.クリック時イベントでMouseRow/MouseColを取得しないで、Private宣言した変数を使用する

はずしてたら、すいません。
    • good
    • 0
この回答へのお礼

この通りやりましたが、うまくいきませんでした。
ただ、SQL文がまずかったらしく、構成を変えたら
うまくいきました。結果オーライ!ありがとございます。

お礼日時:2001/11/19 18:55

回答になってはないとは思うけど、、、



僕の場合はあまりFlexGridは使用してません。必要のない機能が多いからです。データを連結して表示するようなことをしてたり、Grid単位での色づけをしてるのであれば話は別ですが・・・

そんなことがないのであれば、DataGridを使用してみてはいかがでしょうか?
ADOデータコントロールを使用してるみたいだし、DataGridとの相性も悪くないですよ。

どうしてもFlexGridじゃなきゃだめですか?

この回答への補足

書き忘れてましたが、おっしゃる通り、データ内容で、3色に塗り分けていますので、FlexGridでないと・・・

補足日時:2001/11/04 20:52
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWord2007のコンテンツコントロールについて

Word2007で表紙「サイドライン」というものを挿入しました。

その後、コンテンツコントロールを削除できないように「開発」タブを表示させ、リボンの中からプロパティをクリックしようとしましたが、グレーアウトしていてクリックできません。

デザインモードにするとプロパティをクリックできるようになるのですが、クリックすると英語がズラズラ出てきて、コンテンツコントロールのプロパティウィンドウは出てきません。

どのようにすれば、コンテンツコントロールのプロパティ画面が出るのでしょうか。

Aベストアンサー

> デザインモードにするとプロパティをクリックできるようになるのですが、
> クリックすると英語がズラズラ出てきて
これは、コンテンツを何も選択していない場合は、ドキュメントのプロパティ一覧が表示されているのと違いますか。

デザインモードかどうかに関わらず、各コンテンツコントロールを選択すると、プロパティがアクティブになって選択できるようになりませんか。
 

QADODCとデータグリッドを連動させるには?

WINDOWS2000,VB6,SP5で開発しています。

グリッドのデータソースにADODCコントロールを指定して、
これらを連動させたいのですが、どうもできません。

やりたいのは、レコードの削除です。

ADODC1.RecordSet.Delete

で、カレントレコードを削除させてるのですが、
グリッドで削除したい行を選択しただけでは、
ADODCのカレントレコードは動いてないようなのです。
なので、ADODCの一番初めの行が削除されてしまい、困ってます。

こんな初心者なわたくしですが、どうぞよろしくお願いしますm(_ _)m

Aベストアンサー

Set DataGrid1.DataSource = Adodc1
としてますか。

Qワード2010「フォームコントロール」文字制限

ワード2003などの文書を保存すると、「コンテンツコントロール」が使えなく
ワード2010では「フォームコントロール」を使わないといけないということがわかり
ためしに、ワード2003のファイルをワード2010で「フォームコントロール」の設定をしましたが
以下の問題が発生しました。

テキストフィールドのフォームコントロールを挿入し、文字列、最長10文字、全角で設定を
したのですが、10文字以上の文字も数字も入力ができるのです。

また、コンボボックスのフォームコントロールを挿入し
「ビジネス英語」「簿記」「パソコン」とドロップダウンリストを作ったのですが
ドロップダウンして「英語」以外のものを選択ができません。

どうしてでしょうか?

テキストはFOM出版 MOSエキスパート2010のLesson72をやっています。
テキストにそってやっているのですが、上記が疑問です。

ぜひ、ご回答をいただきたいと思っております。
よろしくお願いします。

Aベストアンサー

>2003などで文書を保存すると、ワード2010では「フォームコントロール」を使わないといけないということがわかり・・・
というよりは、互換モードになりますので2010のコントロールコマンドは使えない状態(グレーアウトします)となり、「以前のバージョンのツール」というコマンドのみの使用となります

テキストフォームフィールドの設定は添付画像を載せますが、一応念のため設定方法を・・・。
テキストボックスフォームフィールドをダブルクリックするとプロパティが出ます
「種類」→「文字列」に設定
「最長文字数」→「10」に設定
「文字列の形式」→「全角文字」
ここまで設定で来たら「OK」を押す

「開発」タブより、「文書の制限」をクリック
1 書式の制限
  「利用可能な書式を制限する」にチェックを入れる
2 編集の制限
  「ユーザーに許可する編集の種類を指定する」の▼をクリックして「フォームの入力」を選択
「はい、保護を開始します」をクリックするとパスワードを入力する画面が出ますが、何も入力しないで「OK」をクリック

テキストボックスフォームフィールドをクリックして文字を入力
<例>あいうえおかきくけこさしすせそ(わざと15文字入力します)
文字はいくらでも入力できますが「Enter」を押したときに10字以上は消えて10字までの文字がフィールド内に入力されます

あと、ドロップダウンフォームフィールドですが・・・ (; ̄ー ̄A アセアセ・・・
これも同じく、1・2の順で文書を保護する事で、ドロップダウンのフィールドをクリックするとリストが出ますので、FOM出版のテキストをもう一度よく読んでみて下さい

>2003などで文書を保存すると、ワード2010では「フォームコントロール」を使わないといけないということがわかり・・・
というよりは、互換モードになりますので2010のコントロールコマンドは使えない状態(グレーアウトします)となり、「以前のバージョンのツール」というコマンドのみの使用となります

テキストフォームフィールドの設定は添付画像を載せますが、一応念のため設定方法を・・・。
テキストボックスフォームフィールドをダブルクリックするとプロパティが出ます
「種類」→「文字列」に設定
「最...続きを読む

Q階層フレキシブル グリッド コントロール のスクロールバーを表示しない状態でスクロールさせる方法は?

VB6.0で階層フレキシブル グリッド コントロールを
3個をそれぞれ明細部・縦計部・横計部として使用して、
スクロールを連動させて表示したいと思っています。
ただ、グリッドコントロールのそれぞれにスクロールバー
を表示させるのはあまり見栄えがよくないので、
垂直スクロールバーで、明細と横計の上下スクロール、
水平スクロールバーで、明細と縦計の左右スクロールを
制御しようと思い、
とりあえず、グリッドコントロールの
ScrollBarsプロパティーをflexScrollNoneに設定してTopRowプロパティーとLeftColプロパティーの値を
適当に設定してみたのですが、左上のセルは(1,1)
が表示されたままでした。

なんとか、うまくスクロールさせる方法はないでしょうか?

Aベストアンサー

スクロールバーを表示していないと、スクロールできないみたいです。(多分)
(ヘルプにはキーボードでの入力時の事しか書いてありませんでした。)

そこで、下記のようにしてみたらどうでしょう?

Private Sub HScroll1_Change()
  With MSHFlexGrid1(0)
    .Visible = False
    .ScrollBars = flexScrollBarHorizontal
    .LeftCol = HScroll1.Value
    .ScrollBars = flexScrollBarNone
    .Visible = True
  End With
End Sub

一部分だけですが・・・
(1)グリッドを非表示にする。(画面のちらつきが起こらないように)
(2)スクロールバーを表示する。
(3)左上のセルを変更する。
(4)スクロールバーを非表示に戻す。
(5)グリッドを表示する。

説明がなくても分かるとは思いますが念のため。
もっと、簡単な方法(設定)があったらすみません。

スクロールバーを表示していないと、スクロールできないみたいです。(多分)
(ヘルプにはキーボードでの入力時の事しか書いてありませんでした。)

そこで、下記のようにしてみたらどうでしょう?

Private Sub HScroll1_Change()
  With MSHFlexGrid1(0)
    .Visible = False
    .ScrollBars = flexScrollBarHorizontal
    .LeftCol = HScroll1.Value
    .ScrollBars = flexScrollBarNone
    .Visible = True
  End With
End Sub

一部分だけですが・・・
(1...続きを読む

Q設定などの表示が英語になった

スリープ状態から起こすとき、毎回パスワードを要求されるようになりました。面倒なのでなんとかしようとしたら、設定が英語表示に変わってしまいました。日本語表示に戻るにはどうしたら良いのでしょうか?
画面には今も日本語が出るし、こうして日本語入力もできます。しかし、コントロールパネルなどの表示が英語になっています。

Aベストアンサー

「スタート」右クリック「ファイル名を指定して実行」「 netplwiz」入力「OK」
「ユーザー」「このコンピューターのユーザー」からユーザー名を選択し、「ユーザーがこのコンピュータを使うにはユーザ名とパスワードの入力が必要」のチェックを外し「OK」
パスワードを入力、確認のため再度入力、「OK」再起動→パスワード入力を省略し自動サインインになります。(アカウントとパスワードは記録しておきます)

英語表示
1)再起動してみる。
2)「スタート」ボタン右クリック「コントロールパネル(Control Panel)」「時計、言語、および地域(Clock, Language, and Region)」言語の設定。(「スタート」メニューの「設定(Settings)」→「時刻と言語(Time & language)」でも言語を設定)

QVB データテーブルA列とB列があった時、B列の1行目から1stepずつデータを入力していきたい

AddDataTableRowメソッドにて
1月として、A列は日付で先に31日分の行が作成されます。その際にB行はNothingで生成しました。
私は、A列はそのままでB列の1行目から1つずつ書き込んでいくコーディングが知りたいです。
現在はAddDataTableRowのためA列の最後の行の次の行が追加され入力されてしまいます。

Aベストアンサー

whereで列BがNothingだけにして、列AのMinの値を取得
列A指定して、狙い打ちでUpdate

Q英語版WindowsXPもしくはVistaを日本語化

現在、オーストラリアに滞在しておりまして、最近の円高を利用し
現地の英語版のPCを購入し、OSだけ日本語化しようと考えています。
そこで質問なのですが、例えばスタートメニューやコントロールパネルなどすべて英語から日本語へ変更することは可能なのでしょうか。それともやはり日本語版のOSを購入しないと、すべて日本語にすることは難しいのでしょうか。またその逆で日本語版を英語版にする方法もぜひ教えてください。ご回答宜しくお願いします。

Aベストアンサー

Vistaと、XPでは若干違います。

特にXPのプロの多言語対応版のOSを購入したのなら、かなり日本語化できます。といっても、スタートメニューが起動時は英語、切り替えると日本語になったり英語に戻ったりだったと思います。コントロールパネルは英語のままで、アイコンそのものを自分で変更すると、日本語表示にまで変えることができますが、自分が名前を日本語で入力しなおしたもの、あるいは、日本語のアイコンを移植したものだけです。

日本語版、これを英語に切り替えるのも同様です。起動時は日本語になってしまうのですが、起動するまでは英語の表示にすることは、インストールする際の指定の仕方である程度は可能です。XPなら、プロの多言語対応版ならという条件ですので、他はそこまで対応できないと思います。

VISTAになると、アルティメットの日本語版を購入すると、ある程度は英語の表示に切り替えできました。しかし、ホームプレミアムやベーシックでは英語のスタートメニューには私はできませんでした。

今書き込みしているパソコン、米国購入で、初期はVISTAのベーシック英語版で、デュアルブートで日本語版のホームプレミアムにしてあります。英語のベーシック版も、日本語のソフトもアプリもほとんど使えるのですが、文字化けが激しい、起動してから、表示がときどき日本語に戻る程度の不安定な状態ですが、十分に日本語で使えます。

逆に日本語版のホームプレミアムに英語版のアプリを入れると、文字化けが激しく、フランス語やどこの言語か不明の状態になるので、割り切って、日本語のソフトは日本語版の方にインストール、英語版は英語のほうにインストールしています。特にオフィス、これは、パーソナルだと、インストールした言語の方をメインにされてしまうみたいで、英語のベーシック版にインストールすると英語起動で初期が英語になってしましました。使いにくいので、英語版はアンインストールし、日本語版のホームプレミアムの方だけライセンス認証して使うようにしています。

アルティメットではパーソナル版を使っていないのでどうなるか試していませんが、オフィスは、日本語版には日本語、英語版には英語をインストールしないと、動作も異常が起こりそうです。

ちなみに、私は試さないのですが、アップグレード版の日本語版ビスタホームプレミアムなどを購入し、英語のベーシック版からアップグレードしても、ちゃんと日本語版としてインストールできるそうです。その場合には、英語のベーシック版は使えなくなりますので、両方使い分けたかったら、通常版を購入することになります。

Vistaと、XPでは若干違います。

特にXPのプロの多言語対応版のOSを購入したのなら、かなり日本語化できます。といっても、スタートメニューが起動時は英語、切り替えると日本語になったり英語に戻ったりだったと思います。コントロールパネルは英語のままで、アイコンそのものを自分で変更すると、日本語表示にまで変えることができますが、自分が名前を日本語で入力しなおしたもの、あるいは、日本語のアイコンを移植したものだけです。

日本語版、これを英語に切り替えるのも同様です。起動時は日本語にな...続きを読む

Q「Alt+Enter」で折り返した文字列。1行目は何文字? 2行目は何文字?

セルの中に、「ALt+Enter」で複数行に折り返している文字列があって、
1行目は何文字で、折り返した2行目は何文字、3行目は何文字…
とカウントさせたいのですが…???
無理???
できましたら、具体的に記述して教えてください。

Aベストアンサー

こんな書き方もあるということで・・・
対象セルを1つ選択して下記マクロを実行します。

Sub MojisuCount()
Dim moji As String '選択セルの内容
Dim rw As Integer '行カウンタ
Dim pot As Integer 'Instrで調べた改行コードの位置

moji = Selection & vbLf '選択セルの文字の最後に改行を付加(判定を不要にする)
pot = InStr(moji, vbLf) '改行コードの位置は?
While pot > 0 'なくなるまで続ける
rw = rw + 1 '行を進める
MsgBox rw & "行目は " & pot - 1 & " 文字です"
moji = Mid(moji, pot + 1) '改行文字の次からを新たな検索対象にする

pot = InStr(moji, vbLf) '改行コードの位置は?
Wend
End Sub

こんな書き方もあるということで・・・
対象セルを1つ選択して下記マクロを実行します。

Sub MojisuCount()
Dim moji As String '選択セルの内容
Dim rw As Integer '行カウンタ
Dim pot As Integer 'Instrで調べた改行コードの位置

moji = Selection & vbLf '選択セルの文字の最後に改行を付加(判定を不要にする)
pot = InStr(moji, vbLf) '改行コードの位置は?
While pot > 0 'なくなるまで続ける
rw = rw + 1 '行を進め...続きを読む

Q言語を英語表記にしたいのですが・・・

ビスタを購入した外国の友人より相談をうけました。

メニュー画面などを英語表記にしたいのですが、
コントロールパネルの言語のオプションで英語を
選んでも上手くいきません。

メニューなど全般を英語にすることはできないのでしょうか?

Aベストアンサー

EnterpriseとUltimateエディションのみ、MUIに対応しています。

http://trendy.nikkeibp.co.jp/article/col/20070409/121526/
http://www.atmarkit.co.jp/fwin2k/win2ktips/1090langpk/langpk.html

Q指定した行を選択してそれを基準に同じ処理をする方法を教えてください。 (例) 5行目を選択 5行目を

指定した行を選択してそれを基準に同じ処理をする方法を教えてください。
(例) 5行目を選択
5行目を1とした場合そこから31行同じ処理をする
5行目を選択 転記する
6行目を選択 転記する
|
31行目を選択 転記する

for ~. next を使えばいいのかと思いますがうまくいきません。

エクセルの内容をuserformのテキストに表示します。

よろしくお願いします。

Aベストアンサー

Dim i As Integer

With Worksheets("可燃").Range("A10")
For i = 1 To 16
Me.Controls("TextBox" & i) = .Cells(i, 1)
Next
End With

とか。


人気Q&Aランキング

おすすめ情報