RADツールを使用しないでリストビューを生成する方法について

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
me262

RADツールを使用しないでリストビューを生成する方法について

#1 投稿記事 by me262 »

RADツールを使わない派です。
ver2.59で作成した統計ソフト(社内ソフト)の機能向上と同時に,最新verへ
の置換えを行なっています。
ver2.59では出力結果をTEXT出力,又はEDITへのデータ書き込みなどで行なって
いましたが,分散分析のように出力結果が多いと,ウィンドウ全体の見栄えが
正直あまりよくありません。
そこでデータ表示の見た目がよいリストビューに出力しようと思っています
が,ここ数日トライしているものの,親ウィンドウへリストビューを生成する
こともできていません。→生成命令記述部でアクセス違反発生
ABのヘルプにはリストビューに関する記述が一切ないので,どなたか数日間の
暗闇を明るくして頂きたいのですが。
<ご質問事項>
通常のウィンドウ生成(クラスデータ設定→クラスの登録→生成)に対して何
か特別な設定がありますか。生成させるための事前設定は?
#include <api_commctrl.sbp>は一応記述
ABで定義されていないリストビューのクラス名(lpClassName=)は?
試行錯誤の上”LISTVIEW”と記述
詳細なコードはお手数を掛けますので,ポイントのみで結構です。
しかし何でこんな簡単なことが~。
ゲスト

#2 投稿記事 by ゲスト »

http://www.mitene.or.jp/~sugisita/vb6_cmctl.html
ここにVBでのサンプルがありますが、どうですか?
淡幻星
記事: 183
登録日時: 2005年7月19日(火) 07:02
お住まい: 宮城県
連絡する:

Re: RADツールを使用しないでリストビューを・・・

#3 投稿記事 by 淡幻星 »

おぉ、なんか親近感が沸きました!
最近リストビューの使い方を勉強中の淡幻星です(^_^)
よろしゅ~(笑)。
<ご質問事項>
通常のウィンドウ生成(クラスデータ設定→クラスの登録→生成)に対して何
か特別な設定がありますか。生成させるための事前設定は?
とくにありません(そのはず)。
#include <api_commctrl.sbp>は一応記述
ABで定義されていないリストビューのクラス名(lpClassName=)は?
試行錯誤の上”LISTVIEW”と記述
詳細なコードはお手数を掛けますので,ポイントのみで結構です。
ヘルプには載っていませんが、リストビューのクラス名は
lpClassName = "SysListView32"
で定義されていますので、親窓hWndに対しての作成はこんな感じです。

コード: 全て選択

InitCommonControls()
hListView = CreateWindowEx( NULL, "SysListView32", NULL, _
		WS_CHILD or WS_VISIBLE or LVS_REPORT , _
		0, 0, 360, 240, _
		hWnd, ID_ListView, _
		GetModuleHandle(0), NULL )
参考までに、
作成したリストビューに対して一行選択やグリッド表示、
チェックボックス付加を設定する場合は、
下記のようにすると出来ます。

コード: 全て選択

Dim hAny As Long
Dim ic As INITCOMMONCONTROLSEX

'リストビューの拡張設定
'※チェックボックス付・1行選択・グリッド表示を許可
hAny = GetDlgItem( hWnd, ID_ListView )
ic.dwSize = Len( ic )
ic.dwICC = ICC_LISTVIEW_CLASSES
InitCommonControlsEx(ic)
SendMessage( hAny, _
		LVM_SETEXTENDEDLISTVIEWSTYLE, _
		LVS_EX_CHECKBOXES or LVS_EX_FULLROWSELECT or LVS_EX_GRIDLINES, _
		LVS_EX_CHECKBOXES Or LVS_EX_FULLROWSELECT or LVS_EX_GRIDLINES )
エラーしましたら、すいません。
自分のコード(AB3)からリストビューの部分だけを貼り付けたので、何らかの不整合があるかもしれません。


ちなみに、BackSearchABで「チェックボックスについて」で
検索するとヒットするログ(1件)に、
AB2版でのリストビューの作成方法+その拡張スタイルの扱い方が載っています。
AB2→最新版(AB4)へ移植をされている方向けだと思います。
そちらログでは使うAPIや構造体をいろいろ定義していますが、
最新版ではapi_commctrl.sbpをインクルードするだけで十分です(そのはず)。
(もちろん「リストビュー」で検索すれば、たくさん引っかかります)


蛇足ですが、ABのRADでは拡張スタイルにWS_EX_CLIENTEDGE(縁が沈んで見える境界線を持つウィンドウを作成)をデフォルト指定していますね。

さらに蛇足ですが、質問内容がすごく分かりやすくて、答えるのが楽でした(^_^)。
me262

RADツールを使用しないでリストビューを生成する方法について

#4 投稿記事 by me262 »

> http://www.mitene.or.jp/~sugisita/vb6_cmctl.html
> ここにVBでのサンプルがありますが、どうですか?

VB.NETを持っているのでコードは確認できましたが,やはりlpClassNameの
WC_LISTVIEWをABは無効な識別子と言い張ってしまいます。
hListViewWnd(Bn) = CreateWindowEx_
(
WS_EX_CLIENTEDGE,
WC_LISTVIEW,
"",
WS_CHILD or WS_VISIBLE or WS_BORDER or WS_CLIPSIBLINGS or   WS_CLIPCHILDREN or LVS_REPORT,
xb,yb,bw,bh,
hWnd,
NULL,
GetModuleHandle(0),
NULL,
)
コモンコントロールのイニシャライズをやっていなかったので,これは追加
しましたが,生成されないことに変わりはありませんでした。
RADツールでの初期設定で,APIに関してコモンコントロールを使用する際の
チェックがありますが,ツールを使用しない場合のこれに変わる設定は,
#include<api_commctrl.sbp>
InitCommonControls()
で良いかも分かっていません。→一応デバッグはパスしますが
me262

RADツールを使用しないでリストビューを生成する方法について

#5 投稿記事 by me262 »

淡幻星さん,素早く的確な情報を大感謝です。
勿論一発で生成できました。
lpClassName = "SysListView32"
この定義がなかなか見付かりませんでした。
これで本日快晴となりました。うーん3日間何だったのだろう。
返信する