VB2005環境にてFlexGridを使用しています。

ある列のセルの値が1になったら、その行の背景色を灰色にしたいと
思っているのですが、その方法についてご教授ください。

おそらくは値が変わった時に何かイベントを取得できると思うので、
その時に例えば左から2列めの該当セルが1にされたら、色を変える…
というような考え方で良いでしょうか?
ただ、それを実現するためのイベントが何か、また、行の値を
変える方法がわからず困っています。
(ROWプロパティでしょうか?)

申し訳ないのですが、サンプルコードを交えて教えていただけ
ないでしょうか?
よろしくお願いします。

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

A 回答 (1件)

VB6の頃の FlexGridってことでしょうか?


セルのデータを変更しても それを検知できるイベントはありません
やるとすればEnterイベント(VB6風ならGotfocusイベント)やLeaveCellイベントで
カレントセルの列番号、値を調べて条件に一致したならCellBackColorで色を変更といった具合でしょう
LeaveCellイベントでやる場合は 再帰を不可にする工夫が必要です

  dim n as integer
' 元に戻すための色を設定
  dim cl as Drawing.Color = axMSFlexGrid1.BackColor
  if axMSFlexGrid1.Text = "1" then
    ' 希望の色に変更してください
    cl = Color.Red
  end if
  ' 左から2番目の列がカレントセルなら
  ' FixedColsを考慮したほうがいいでしょう
  if axMSFlexGrid1.Col = 1 then
    ' 行の先頭から末尾までセルの背景色を変更
    for n = axMSFlexGrid1.FixedCols to axMSFlexGrid1.Cols-1
      axMSFlexGrid1.CellBackColor = cl
    next
    ' 元選択されていた列に戻す
    axMSFlexGrid1.Col = 1
  end if

といった具合でしょう ...

行番号は Rowプロパティで取得できますよ
    • good
    • 0
この回答へのお礼

詳しいVerを書き忘れていました。
Flex Grid For.NET 3.0Jです。

しかし、redfox63さんの提示してくれたコードを参考に、
目的の動作を実現することができました。
ありがとうございました。

お礼日時:2007/08/05 09:19

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Q車の色の名前の一覧を探してます!

自動車の色の名前は、ウイニングブルーメタリック、カナリーイエローマイカなど独特なカタカナ名が多いですが、このような名前が一覧になっているようなHPを探しています。ありましたらどなたか教えてください。

Aベストアンサー

ここで探して下さい。

参考URL:http://www.soft99.co.jp/

QVS2005のVB2005の開発環境として、一番良いOSは何でしょうか?

VS2005のVB2005の開発環境として、一番良いOSは何でしょうか?
理由などあれば助かります。
基本的に .NET2.0のプログラムを書きます。

1) Windows 98
2) Windows 2000 Professional
3) Windows 2000 Server
4) Windows XP Home
5) Windows XP Professional
6) Windows XP Professional x64
7) Windows Server 2003 SP2
8) Windows Server 2003 Standard R2 SP2
9) Windows Server 2003 Standard SP2 x64
10) Windows Server 2003 Standard R2 SP2 x64
11) Windows Server 2008 Standard SP2
12) Windows Server 2008 Standard R2 SP2
13) Windows Server 2008 Standard SP2 x64
14) Windows Server 2008 Standard R2 SP2 x64
15) いやいや Enterprise版
16) その他

VS2005のVB2005の開発環境として、一番良いOSは何でしょうか?
理由などあれば助かります。
基本的に .NET2.0のプログラムを書きます。

1) Windows 98
2) Windows 2000 Professional
3) Windows 2000 Server
4) Windows XP Home
5) Windows XP Professional
6) Windows XP Professional x64
7) Windows Server 2003 SP2
8) Windows Server 2003 Standard R2 SP2
9) Windows Server 2003 Standard SP2 x64
10) Windows Server 2003 Standard R2 SP2 x64
11) Windows Server 2008 Standa...続きを読む

Aベストアンサー

ちなみに、
WinXP PRO SP2-3
WinXP HOME
WinServer2003 R2 SP2
Vista
7
いずれも32bit版ですが開発してました。
どれも大差ありません。
開発環境とマシンスペックを考えて開発にイライラしないOSでいいんじゃないでしょうか。
ちなみに Vistaはカスタマイズしないとノッペリした動きで私は嫌いです。

マシンスペックを考慮しないのであれば
他の方と同じく、動作環境に近いものでやればいいと思います。

Qファイル一覧の項目の色について

ディスクを開くとフォルダゃファイルの一覧が表示されますが、この一覧の各項目名というか表題というか、この表示される名前に色はつけられないものなのでしょうか、色分けできればわかりやすいので、教えていただきたいのですが。

Aベストアンサー

explorerだけではできそうにない。
いろいろなツールがフリーソフトである。


たとえば、
http://homepage3.nifty.com/pyxis/

Qvisual studio2005でvb.NETとvb2005

visual studio 2005を購入して現在その研究中です。最近の開発環境としてwindowsからは.net frameworkというベースの環境としてさまざまなプログラミングを行うようになっていることは分かりました。
vbでのソフト開発を試みているのですが、その環境下でのvb.NETとvb 2005の違いがよく分かりません。どちらも.net環境であるので単に新しいヴァージョンになっただけでしょうか。どちらでやった方が良いか何か知っている事がありましたら、些細な事でも構わないので教えて下さい。よろしくお願いします。

Aベストアンサー

VB.Netの新しいバージョンがVB2005です。
なのでVB2005を利用で良いと思いますよ。

VB5→VB6→VB.NET(2002版)→VB.NET(2003版)→VB2005
現在の最新版がVB2005ですね。

ちなみに.NET FrameWorkは
・VB.NET(2002版)で作ったアプリは .NET Framework 1.0
・VB.NET(2003版)で作ったアプリは .NET Framework 1.1
・VB2005で作ったアプリは .NET Framework 2.0
が必要になります。

Q「名前をつけて保存」のデフォルト表示形式を「一覧」以外に変えられますか?

MS-Office以外のアプリケーションで「名前をつけて保存」を選択した際の、
ダイアログウィンドウ内の表示形式を変えられますか?

「詳細」「一覧」「アイコン表示」「並べて表示」「縮小版」
などの選択肢を一定のものに変えたいのです。
(現状では、毎回「名前をつけて保存」を開くたびに「一覧」表示に戻ってしまうようです)

OSはWindows-XPです。

Aベストアンサー

Windows標準の機能(フォルダオプションなど)では出来ませんが
http://okazaki.incoming.jp/matatabi/
のFasieと言うフリーSOFTを使えば出来ます。

http://okazaki.incoming.jp/danpei2/software/fasie.htm
http://pasokoma.jp/39/lg390467#390654

QDLLの登録をVBで行いたい(VB2005)

いつもお世話になっております。
VB2005で開発しています。

DLLを登録するときに、コマンドプロンプトから
regsrv32 ファイル名.dll
と実行すると思います。

これをVBから行いたいのですが、何か良い方法はございませんか?
具体的には、VBでレジストリ登録するファイルの一覧を出力して、
それをレジストリ登録したいのです。
VBとバッチを組み合わせれば、実現可能なのですが、
ファイルを2つに分けたくないので、VBだけで処理できないものかと
思いました。

コマンドプロンプトで実行するコマンドをVBから同じように実行できれば良いのですが・・・
もしよろしければ、ご教示ください。
よろしくお願い致します。

Aベストアンサー

System.Diagnostics.Processを使えば可能でしょう

dim ss() as String = {"MSFlxgrd.ocx", "msadodc.ocx"}
dim proc as System.Diagnostics.Process
for s as String in ss
proc = System.Diagnostics.Process.Start("Regsvr32.exe", s & " /q" )
proc.WaitForExit()
next
MsgBox "終了"
といった具合です

QAccessで指定する色数値の一覧ありませんか?

MsAccess 2002でフォームを作成しているのですが、フォームの色指定に使える色数値の一覧表はどこかにありませんでしょうか?

VBAを使いRGB関数で指定しても期待したとおりの色を取得することができません。
Accessで使用できる色数値の一覧を参照できるページなどご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

#1です。先程のページの最後に「このホームページで表示している色は近似色です。正確な色ではありませんので御注意下さい。」と書いてありますので、もしかしたらうまく同じ色が出ないかも知れないですね。
とりあえずカラーチャートのリンク集がありましたので見てみて下さい。
http://www2u.biglobe.ne.jp/~color/all/l_02a_chart.htm

参考URL:http://www2u.biglobe.ne.jp/~color/all/l_02a_chart.htm

QVB6,リストボックスの特定行の色変更は可能?

リストボックスに複数行テキストが登録されているときに、特定の行の背景色を変更することは可能でしょうか?
リストボックスのプロパティ等をいろいろ探してみたのですがそれらしきものは見つかりません。
サブクラス化というやつをすればできるのでしょうか?
よろしくお願いします。

Aベストアンサー

これは「オーナードロー」というテクニックになります。

例えばListBoxの描画をVBでは意識する必要がありませんが(マウスで選択するとハイライトしたり、ウインドウを再表示した時に再描画してくれたり等)、これはOSが勝手にやってくれるからなのです。
「オーナードロー」とは、このOSがやってくれる作業を自分で行う、ということになります。
自分で行えば背景色の変更も、前景色の変更も可能になります。
背景にビットマップを描画することも可能です。

>サブクラス化というやつをすればできるのでしょうか?

オーナードローをVB6で実現するには、サブクラス化が必須になります。
オーナードローのコントロールからWM_DRAWITEMというメッセージが送られてくるので、それを処理しなければいけないからです。
ただ、VB6標準のListBoxには「オーナードローを許可する」ListBoxというのがありません。
具体的に言うと
LBS_OWNERDRAWFIXED:(デフォルト)普通のListBox
LBS_OWNERDRAWVARIABLE:オーナードローが有効なListBox
という2つのウインドウスタイルがありますが、VB6標準のListBoxはLBS_OWNERDRAWFIXED固定になっています。

これを変える事は難しいので、CreateWindowEx()API関数を使って「一から(LBS_OWNERDRAWVARIABLEを有効にした)ListBoxを作成する」という作業が必要になります。
そのうえで、サブクラス化を行い、ウインドウプロシージャでWM_DRAWITEMを捕まえて、描画を行います。

しかも、描画にしてもVC++などでウインドウ描画(ブラシなど)の知識があればその辺は何とかなると思いますが、やったことが無いとかなり大変です。
なにせ、OSがやってくれたことを全部(に近い状態で)行わなくてはいけないのですから。

もしサブクラス化の知識もおありでないようでしたら、潔くListBoxを使うのはあきらめたほうがいいかもしれませんね(^^;
一応、参考になりそうなサイトを挙げておきます。

<<ボタンのオーナードロー>>
http://www5.ocn.ne.jp/~minute/article/vb/a2.html
このケースではCommandButtonですが、考え方は一緒です。
<<サブクラス化>>
http://www.galliver.co.jp/writing/susume_vb/tre908/
ListBoxそのものではありませんが(MS提供のユーザーコントロールを使う)、参考になるサンプルとその情報があります。

いちばん簡単なのは、多少運用は面倒ですがListBoxの代わりにTreeViewなどを使う方法ですね。
時間があればListBoxでチャレンジしても構いませんが、サブクラス化一つとってもそれなりの知識が必要ですので、段階を踏んで知識を積み上げていくことをオススメします。

これは「オーナードロー」というテクニックになります。

例えばListBoxの描画をVBでは意識する必要がありませんが(マウスで選択するとハイライトしたり、ウインドウを再表示した時に再描画してくれたり等)、これはOSが勝手にやってくれるからなのです。
「オーナードロー」とは、このOSがやってくれる作業を自分で行う、ということになります。
自分で行えば背景色の変更も、前景色の変更も可能になります。
背景にビットマップを描画することも可能です。

>サブクラス化というやつをすればできるのでし...続きを読む

Q一覧にある名前に該当する名前を赤くしたいのですが…

こんばんわ、いつもお世話になっています。

Excelのシートで
「シート1」に名前一覧を作り、「シート2」に名前を入れていくと「シート1」に名前がある人を入力すしたとき入力した文字を赤くしたり太字させることは可能ですか?

Aベストアンサー

Sheet1のA列を全て選択して、挿入-名前-定義で適当な名前を付けます。(例 リスト)
Sheet2のA列を全て選択して、書式-条件付き書式で「数式が」にして

=NOT(ISERROR(MATCH(A1,リスト,0)))

と入力し、書式を設定します。

これで希望のようになりますか?

QVB.net(2005)でエクセルの特定名称のシートを操作したい。

 
お世話になります。
WindowsXP + SP3、VB.net(2005)の環境にて開発をしております。

VB.netから既存のエクセルファイル(雛形)を開き、特定の名称のシートを
アクティブにしたいのですがどのようにコーディングすれば良いでしょうか?
※色々とネットで情報検索してみましたが特定の名前のシートを操作する
 方法をうまく見つけられず質問致しました。

エクセルファイル名:売上情報_2009年.xls
シート名     :"200901" ~ "200912" の12シート


以前、VB6で同様のことを行ったときは以下のような記述で実現できました。

Dim xlApp As Object
Dim xlsheet As Object

xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open(FileName:="C:\売上情報_2009年.xls")
xlsheet = xlApp.Sheets("200908")
xlsheet.Activate()

現状、vb.netで以下のコーディングまではできております。

Dim xlApp As New Excel.Application
Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls")
Dim xlSheets As Excel.Sheets = xlBook.Worksheets

よろしくお願い致します。
 

 
お世話になります。
WindowsXP + SP3、VB.net(2005)の環境にて開発をしております。

VB.netから既存のエクセルファイル(雛形)を開き、特定の名称のシートを
アクティブにしたいのですがどのようにコーディングすれば良いでしょうか?
※色々とネットで情報検索してみましたが特定の名前のシートを操作する
 方法をうまく見つけられず質問致しました。

エクセルファイル名:売上情報_2009年.xls
シート名     :"200901" ~ "200912" の12シート


以前、VB6で同様のことを行ったときは以...続きを読む

Aベストアンサー

Dim xlApp As New Excel.Application
Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls")
Dim xlSheets As Excel.Worksheet = xlBook.Worksheets("200908")

xlApp.Visible = True
xlSheets.Activate()

と言う感じ?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング