リストビューコントロールのViewプロパティを3lvw_Reportにしてクリックすると、アイテムが選択されますが、SubItem(1)など、サブアイテムが選択されたいないので、見た目がわるいです。
クリックしたときに全サブアイテムを横一直線に選択したいのです。
APIを使って何とかできそうな気がしたので調べたのですが、わかりませんでした。
どなたか教えてください。

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

A 回答 (1件)

VB5なら、


-------------------------------------------------
Dim r As Long
'リストビュースタイル変更用マクロのハンドル取得
r = SendMessage(ListView1.hwnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0&, ByVal 0&)
'全行選択のフラグを付ける
r = r Or LVS_EX_FULLROWSELECT
'リストビュースタイル変更用マクロへ設定
r = SendMessage(ListView1.hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0&, ByVal r)
'定数・APIは、APIビューアで追加してください。
-------------------------------------------------
VB6なら、リストビューのプロパティで「行全体を選択チェック」をチェックすればOKです。
    • good
    • 0

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

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

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

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

Qグレープシティ Active Report のサブフォーム出力について

nekocyanです。
宜しくお願いします。

環境:
 Win Xp Pro Sp2
VisualStudio6 Sp6
Active Report 1.5

ご質問
 アクティブリポート1.5を使用して、帳票を
 作成しています。

2つのレポートを作って1つはサブフォームの
ベースとなります。
もうひとつに詳細を作成して、ベースのサブ
フォームエリアにロードして帳票を作成しようと
考えています

詳細はたてに8ブロック横に2ブロックです。
詳細は左側に、縦8ブロック作成し、その後
右側に縦8ブロック作成するように考えています。

ご質問
 この縦の8ブロックを
 作成するときに、自由にコントロールブレークして
 右の一番上から作成したい、また、右の縦を作成
 している状態から、次ページに改ページしたいと
 考えています。
 例:左側の4ブロック出力したところで
 右側の一番上から出力し、5ブロック出力したら
 改ページ

今の状態
 まず改列や改ページが制御できない事
 勝手に途中で改列や改ページをする事
 改列をした場合に右側の一番上から作成されない
 事がある事(一番上から出力される場合もある)
 以上のようなことが問題となっています。

設計状況
 ベースのフォームには明細が十分に入る
 サブフォーム用の「SubReport1」を設置している。
 DetailのCoulumnCountは1を設定

 明細のフォームは8行で1ブロックとなり
 ブロックの終了は GroupHeader1.GroupValue に
 値を設定することで行っている
 DetailのCoulumnCountは2を設定
 後のプロパティーはいろいろ変更してみました
 特にGroupHeader1.NewColumn の状態を
 ロジック内で変更させて改列の制御をしようと
 しましたが、うまくいきませんでした。

この状況を打開できる方法をご存知の方がおられ
ましたらなにとぞご教授下さい。

宜しくお願い申し上げます。

nekocyanです。
宜しくお願いします。

環境:
 Win Xp Pro Sp2
VisualStudio6 Sp6
Active Report 1.5

ご質問
 アクティブリポート1.5を使用して、帳票を
 作成しています。

2つのレポートを作って1つはサブフォームの
ベースとなります。
もうひとつに詳細を作成して、ベースのサブ
フォームエリアにロードして帳票を作成しようと
考えています

詳細はたてに8ブロック横に2ブロックです。
詳細は左側に、縦8ブロック作成し、その後
右側に縦8ブロック作成するように考えてい...続きを読む

Aベストアンサー

具体的には実際のソースと仕様を見ないと何とも言えませんが。。。

・CanGrow、CanShrink=Falseにされていますか?
 どちらかが、デフォルトでTrueだったと思います(私は常にFalse:思わぬ所で改頁します)

・頁下部(印刷物全体)の余白は十分にありますか?
 こちらも、あまりギリギリだと改頁してしまいます

・印刷のないFotterはVisible=False

私も色々試してほぼ雛形の様な物を作っていますが、かなり難しい帳票もこれで作成した事があります
後はチェックするタイミングだけですので1度判ってしまうと変更も簡単なのですが。。。

・Detail Section 等で行カウンターを計算する
 改行は空白(項目のVisible=Falseなど)で可能です
 又、前行と比較する場合でも、非表示の項目を明細部に持ち、改行や改頁できます
 Heghtを計算し調整する事でも対応できるケースもあります

・GroupHeader 等でする場合、改頁用を別に持つ
 こちらの場合は、印刷するデータが無くてもVisible=Trueでないと制御出来なかったと思います。
 逆に、Heght=0でも、CanGrow=Trueの場合、いくらか印刷されてしまいます

うまく説明できなくて申し訳ないのですが、頁下部の余白がない場合以外は、ほぼ何とかなると思うのですが。。。

具体的には実際のソースと仕様を見ないと何とも言えませんが。。。

・CanGrow、CanShrink=Falseにされていますか?
 どちらかが、デフォルトでTrueだったと思います(私は常にFalse:思わぬ所で改頁します)

・頁下部(印刷物全体)の余白は十分にありますか?
 こちらも、あまりギリギリだと改頁してしまいます

・印刷のないFotterはVisible=False

私も色々試してほぼ雛形の様な物を作っていますが、かなり難しい帳票もこれで作成した事があります
後はチェックするタイミングだけですので1度...続きを読む

Qコンテキストメニューアイテムの右クリック左クリック

よろしくお願いします。環境はVB2008です。
フォーム上にコンテキストメニューを配置し、右クリックで表示します。
そのあとにアイテムをクリックすると別のフォームが開くようにしてるのですが、右クリックでも左クリックでも同様にフォームが開いてしまいます。これを左クリックされたときのみ別のフォームを表示するようにするにはどのようにすれば宜しいでしょうか。ぜひご教授願います。

Aベストアンサー

メニューアイテムのClickイベントで別フォームを開こうとすると無理があると思います
Clickイベントにはどのボタンが押されたのかを判定する材料がありません

MouseDownイベントならば引数のMouseEventArgs型にButtonというプロパティがあるので判定可能です

  Private Sub Form2ToolStripMenuItem_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Form2ToolStripMenuItem.MouseDown
    If e.Button = Windows.Forms.MouseButtons.Left Then
      Form2.Show()
    End If
  End Sub

コンテキストメニューを右クリックで表示させている部分と似ているかと ・・・
プロシージャ名や 別フォームの名前などは適宜修正してください

Qツリービューのノードをダブルクリックしたことを判断させるには

 VBにて、ツリービューのノードをダブルクリックしたときにこうする、というような処理をさせるにはそうすればいいんでしょうか。

 TreeView1_NodeClickというのはありますが、ダブルクリックに関してはDblClickだけしか存在せず、どのノードを選択したかを取得できません。

 どなたか、TreeView1_NodeClickのようにノードをダブルクリックした時に限り、そのノードを取得して処理をさせるというような方法を教えてください。

 よろしくお願いします。

Aベストアンサー

Private ClickedNode As MSComctlLib.Node

Private Sub TreeView1_DblClick()
MsgBox ClickedNode.Text + "がダブルクリックされました"
End Sub

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Set ClickedNode = Node
End Sub

NodeClickイベントで、クリックされたノードをセットしておき、ダブルクリックイベントでそれを利用するというのはどうでしょう。

Q ツリービューでエクスプローラーのようにファイルを検索しながら選択した

 ツリービューでエクスプローラーのようにファイルを検索しながら選択したいのですが、やり方がわかりません。
 ファイルダイアログで、開くファイルを指定する方法は簡単で便利ですが、「開く」というボタンをクリックしないとファイル名が得られないという性質があるため、ツリービューに目を付けました。これなら矢印キーだけでファイル名を得られるはずだと考えております。が、ファイル操作とツリービューのノード操作がうまくつながりません。どなたかやさしい例を教えていただけないでしょうか?
 環境は Visual Basic 2010 Express Edition です。.net以降の例ならば動くと思いますので、よろしくお願いいたします。

Aベストアンサー

http://cid-b89cb784f5346675.office.live.com/self.aspx/TestCase/Q6155090/Q6155090.zip

Qエクセル vba クリック~離した位置へ直線の挿入

エクセル vba クリック~離した位置へ直線の挿入

エクセルの図形挿入の、左クリックした位置(x1,y1)から始まり、離した位置(x2,y2)で終わる『直線』のようなマクロをご教示頂けないでしょうか?

マクロの記録では何も出てきません。。。

それを応用してCADの寸法線のような絵を描くマクロを作成したく考えております。
どなたか宜しくお願い致します。

Aベストアンサー

そういえば..昔、書いた事があるコードです。
シートモジュールに置いて、ダブルクリックで描画開始、
どこかのセルを選択するとWidthかHeightをテキストボックスで追加、というものでした。
何かの参考になるようでしたらどうぞ。

'SheetModule
Option Explicit
Dim flg As Boolean
'-----------------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
                    Cancel As Boolean)
  Cancel = True
  Application.CommandBars.FindControl(ID:=1042).accDoDefaultAction
  flg = True
End Sub
'-----------------------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If flg Then
    Call LINETXT(Me.Lines(Me.Lines.Count))
    flg = False
  End If
End Sub
'-----------------------------------------------------------
Private Sub LINETXT(ByRef LX As Line)
  Const x As Single = 1 'scale
  Dim Lp As Single
  Dim Tp As Single
  Dim Wp As Single
  Dim Hp As Single
  Dim St As String

  With LX
    Lp = .Left
    Tp = .Top
    Wp = .Width
    Hp = .Height
  End With
  If Wp > Hp Then
    St = "W " & Wp * x
  Else
    St = "H " & Hp * x
  End If
  With Me.TextBoxes.Add(0, 0, 0, 0)
    .ShapeRange.Line.Visible = msoFalse
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    .AutoSize = True
    .Font.Size = 9
    .Text = St
    .Left = Lp + (Wp - .Width) / 2
    .Top = Tp + (Hp - .Height) / 2
  End With
End Sub
'-----------------------------------------------------------
Sub sampletest() 'Textのみ追加。Lineを任意選択して実行。
  If TypeName(Selection) = "Line" Then
    Call LINETXT(Selection)
  End If
End Sub

そういえば..昔、書いた事があるコードです。
シートモジュールに置いて、ダブルクリックで描画開始、
どこかのセルを選択するとWidthかHeightをテキストボックスで追加、というものでした。
何かの参考になるようでしたらどうぞ。

'SheetModule
Option Explicit
Dim flg As Boolean
'-----------------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
                    Cancel As Boolean)
  Cancel = True
  Applic...続きを読む


人気Q&Aランキング

おすすめ情報