RADツールを使わない派です。
ver2.59で作成した統計ソフト(社内ソフト)の機能向上と同時に,最新verへ
の置換えを行なっています。
ver2.59では出力結果をTEXT出力,又はEDITへのデータ書き込みなどで行なって
いましたが,分散分析のように出力結果が多いと,ウィンドウ全体の見栄えが
正直あまりよくありません。
そこでデータ表示の見た目がよいリストビューに出力しようと思っています
が,ここ数日トライしているものの,親ウィンドウへリストビューを生成する
こともできていません。→生成命令記述部でアクセス違反発生
ABのヘルプにはリストビューに関する記述が一切ないので,どなたか数日間の
暗闇を明るくして頂きたいのですが。
<ご質問事項>
通常のウィンドウ生成(クラスデータ設定→クラスの登録→生成)に対して何
か特別な設定がありますか。生成させるための事前設定は?
#include <api_commctrl.sbp>は一応記述
ABで定義されていないリストビューのクラス名(lpClassName=)は?
試行錯誤の上”LISTVIEW”と記述
詳細なコードはお手数を掛けますので,ポイントのみで結構です。
しかし何でこんな簡単なことが~。
RADツールを使用しないでリストビューを生成する方法について
Re: RADツールを使用しないでリストビューを・・・
おぉ、なんか親近感が沸きました!
最近リストビューの使い方を勉強中の淡幻星です(^_^)
よろしゅ~(笑)。
lpClassName = "SysListView32"
で定義されていますので、親窓hWndに対しての作成はこんな感じです。
参考までに、
作成したリストビューに対して一行選択やグリッド表示、
チェックボックス付加を設定する場合は、
下記のようにすると出来ます。
エラーしましたら、すいません。
自分のコード(AB3)からリストビューの部分だけを貼り付けたので、何らかの不整合があるかもしれません。
ちなみに、BackSearchABで「チェックボックスについて」で
検索するとヒットするログ(1件)に、
AB2版でのリストビューの作成方法+その拡張スタイルの扱い方が載っています。
AB2→最新版(AB4)へ移植をされている方向けだと思います。
そちらログでは使うAPIや構造体をいろいろ定義していますが、
最新版ではapi_commctrl.sbpをインクルードするだけで十分です(そのはず)。
(もちろん「リストビュー」で検索すれば、たくさん引っかかります)
蛇足ですが、ABのRADでは拡張スタイルにWS_EX_CLIENTEDGE(縁が沈んで見える境界線を持つウィンドウを作成)をデフォルト指定していますね。
さらに蛇足ですが、質問内容がすごく分かりやすくて、答えるのが楽でした(^_^)。
最近リストビューの使い方を勉強中の淡幻星です(^_^)
よろしゅ~(笑)。
とくにありません(そのはず)。<ご質問事項>
通常のウィンドウ生成(クラスデータ設定→クラスの登録→生成)に対して何
か特別な設定がありますか。生成させるための事前設定は?
ヘルプには載っていませんが、リストビューのクラス名は#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(縁が沈んで見える境界線を持つウィンドウを作成)をデフォルト指定していますね。
さらに蛇足ですが、質問内容がすごく分かりやすくて、答えるのが楽でした(^_^)。
RADツールを使用しないでリストビューを生成する方法について
> 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()
で良いかも分かっていません。→一応デバッグはパスしますが
> ここに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()
で良いかも分かっていません。→一応デバッグはパスしますが
RADツールを使用しないでリストビューを生成する方法について
淡幻星さん,素早く的確な情報を大感謝です。
勿論一発で生成できました。
lpClassName = "SysListView32"
この定義がなかなか見付かりませんでした。
これで本日快晴となりました。うーん3日間何だったのだろう。
勿論一発で生成できました。
lpClassName = "SysListView32"
この定義がなかなか見付かりませんでした。
これで本日快晴となりました。うーん3日間何だったのだろう。