KEN's VB コーナー

KENのホームへもどる
  プログラミング言語Visual Basic(VB)の話題を扱うコーナーです。このコーナーで話題にしているVBはVB5+SP3です。
それ以外のバージョンでもほぼ通用する話題中心ですが、バージョンが異なると違うところもありますのでご注意願います。
ここが間違っている等の指摘や、こうした方がさらにいいよという報告はyone_ken00@hotmail.comまでお願いします。
  Tipsはテキストファイルにリンクしていますので、そちらから戻る場合はブラウザのバックボタンで戻って下さい。

・Oratorさんより頂いた指摘を反映。「VBのQuiz第一段」の解答の解説、「VBとVBScriptの違い」「データ型にまつわるFAQ」に補足を追加。 2003/07/19
・「BitBltとAutoRedrawとRefresh」「VBとVBScriptの違い」内のリンク切れ、リンク変更があったので修正。2003/02/06

[お堅い読み物][再利用可能な関数][ゴミ箱][このページのトップ]

お堅い読み物 - 情報
  1. このコーナーについて(1999/7/14)
  2. プログラマとして(1999/7/14)
  3. ヘルプの引き方(1999/7/14 & 2000/10/16更新)
  4. 質問の仕方のこつ(1999/7/19 & 2001/05/13更新)
  5. BitBltとAutoRedrawとRefresh(1999/7/19 & 2003/02/06更新)
  6. 2進数と16進数と論理演算 - 前編(1999/8/9)
    *情報系の知識のない人に向けて書いたものなのに、ビットの説明が抜けてたので追加しました。(1999/9/3)
  7. 2進数と16進数と論理演算 - 後編(1999/11/9)<---やっとかい!!
  8. VBのQuiz第一段(2000/8/1)
    --->解答ページを作りました。(2000/8/30 & 2003/07/19 修正)
  9. if文の正体(2000/10/8)
  10. TextBoxにまつわるFAQ(2000/11/13&2001/04/09一部訂正)
  11. 役立たない裏情報〜KeyAsciiとKeyCode〜(2000/11/19)
  12. WidthとScaleWidth(2001/02/18)
  13. VBとVBScriptの違い(2001/03/17 & 2003/07/19更新)
  14. データ型にまつわるFAQ(2001/03/17 & 2003/07/19更新)
  15. 標準関数、ステートメントにまつわるFAQ(2001/04/24)
  16. VBマニアックTips(2002/09/12)
[お堅い読み物][再利用可能な関数][ゴミ箱][このページのトップ]

再利用可能な関数 - Tips
タイトル内容キーワード
R,G,Bに分けてグラデーションBackColorプロパティなどの色をR,G,Bに分割。
また、そのR,G,BでPictureBoxにグラデーションをかける
GetSysColor(API)、 DivCol(自作)、 DrawBKGrad(自作)、 グラデーション、 システムカラー
文字列を桁数で整形桁数(文字数)指定で文字列を整形。不足部分は指定文字で埋める。右寄せ、左寄せ、中央寄せも指定可文字列整形、FormatSpace(自作)
2つの日付から期間を年、ヶ月、日で返す2つの日付から期間を年、ヶ月、日の形で求める。例えば、年齢の計算に使える 日数計算、 年齢計算、 CalcTerm(自作)
VB5でSplit関数VB6のSplit関数をVB5で実現。VB5では配列を返せないので、Collection、Variant、参照渡しを使ったそれぞれの方法で作成 文字列分割、 SplitC(自作)、 SplitV(自作)、 SplitS(自作)
VB5でReplace関数VB6のReplace関数をVB5で実現。VB6のヘルプにある仕様は満たしています。また、他所で見かけるReplace関数より速いです。2、3種との比較では長い文字列のとき20倍〜100倍くらいの速度差 文字列置換、 Replace(自作)、 VB6互換
真・VB5でSplit関数VB6のSplit関数と互換関数をVB5で実現。VB5では直接は配列を返せないので、Variantで配列を返します。インターフェースをVB6に合わせてあるので、ほぼ同じように使用可 文字列分割、 Split(自作)、 VB6互換
VB5でJoin関数VB6のJoin関数と互換関数をVB5で実現。Join関数はSplit関数と対になる関数。Replace関数同様の手法を使っているので、そこそこ高速です 文字列結合、 Join(自作)、 VB6互換
VB5でStrReverse関数VB6のStrReverse関数をVB5で実現。他のVB6互換関数より若干処理が重いですが、64kbyte程度までなら十分実用に耐えると思います 文字列反転、 StrReverse(自作)、 VB6互換
VB5でInStrRev関数VB6のInStrRev関数をVB5で実現。開発当初は内部でStrReverse関数を使用して実現したので、あまり速くなかったのですが、その方針を止めて10倍くらい速くなりました。(速度面で、InStr関数を使うのと同じ感覚で使っても問題ないと思います。というかInStr関数ってかなり高速(^^;) 後からの文字列検索、 InStrRev(自作)、 VB6互換

[お堅い読み物][再利用可能な関数][ゴミ箱][このページのトップ]

ゴミ箱 - お遊び&実験

実験やらお遊びやらのちょっとしたコードです。コメントなし、変数名等の付け方も適当なので役立つかどうかは不明ですが、 とりあえずお蔵入りも勿体ないなと思うのでここに載せます。著作権表示していないサンプル等ありますが著作権は放棄していません。念のため。

タイトル内容
ScoreList ver1.0ゲームなどありがちな、スコアのランキング表示のサンプル。新しい得点が何位に入るのか?また、下位のデータをランクダウンさせるには?といった基本的ロジックが入っています。5位まで表示し、内部的には10位までを保持するようにしています。内部保持データ数と表示数を分けることで少しばかり改良に対しても柔軟です。(2002/09/03)
StopWatch ver1.0ストップウォッチのサンプルです。時刻表示、スタート、ストップ、リセットボタンをコンパクトに配置。1時間まで計測できます。最前面表示処理がしてありますので、ちょっと時間を計るだけなら十分使えます。仕事で使ってます。(2002/09/03)
Puyo ver0.01ぷよぷよクローンの骨格的なサンプルプログラムです。ノーコメント。プログラムの作り方自体もちょっと雑かも。
clsUndoRedo ver0.2TextBoxに無限アンドゥ、リドゥの機能を付加する自作クラスです。Undo、Redoをpublicなメソッドにしました。(2001/02/08)
KeyType ver0.21キータイプソフトは数あれどどれも入力方法が中途半端。ローマ字入力でIMEやAtokで入力できるアルファベットの組み合わせならどれでも(”ちゃ”ならcha,cya,tyaのように)入力できた方がいいと思います。今回の実験の成果物はその入力を引き受けるクラス群とそれをとりあえず使ったサンプルです。単語を扱うclsWordと1固まりの文字(あ、ちゃ、ぎょ、etc)を扱うclsUnitCharの2つのクラスがあります。ver0.21でローマ字入力だけでなく、かな入力もサポート。また、ローマ字入力の入力方法が複数ある場合にどれを優先的に表示するかも設定できるようになりました。仮EXEも付けてます。
clsMeshMng ver0.01自作の格子クラス(clsMesh)と格子管理クラス(clsMeshMng)を使って表のような処理のはしりを実現。各クラスも作りかけだし、表っぽい処理も中途半端なやっつけしごとですが、とりあえず公開。
BitBltCaptureBitBltとFormのhDCを使った裏技による画面のキャプチャーです。この挙動(BitBltでデスクトップのコピーを撮れる)ことの根拠がわかっていませんし、何より正式な方法ではないのでお勧めはしません。でも、キレイにキャプチャーできてしまうんですねぇ、これが。後、PictureBoxをクリックしてマウスを動かすことで、PictureBoxのサイズを大きくしたり、小さくしたりできるという意味のないおまけ付き!
AnaClockFormとTimerコントロールのみ使用のアナログ時計。アナログ時計 刻はShapeコントロール使っているので別物です
calendarFormのみ(しかもLoadイベントのみ)で作った今月のみ表示のカレンダーです
tokei(だいたいで)ミリ秒まで表示する最速のデジタル時計。最小化するとタスクバーで時計が表示されますが、ミリ秒までやるとさすがにタスクバー上ではちらつきます
Picture2LabelPictureBoxでLabelの代用をしてみたサンプルコード
TestTriangleある点が三角形の内部か外部か線上かを真面目な数学的な方法で判定します。精度の問題で100%完璧に判断できるまでには至っていません
MarqeeIEのMARQEEタグのような、あるいは、電光掲示板のようなことをやってます。表示文字に全角が含まれるパターンには対応してません。
clsProgressプログレスバーの代わりになるクラスです。PictureBoxで代用します。手抜きですけど、言い換えればシンプル
DragFormVB標準機能だけで、タイトルバー以外のところを持ってフォームを移動するコードです。でも、ぶれるので、素直にAPIのReleaseCapture関数とSendMessage関数を使いましょう。APIのサンプルならそこら辺に転がってます。
FontGradTipsにある「R,G,Bに分けてグラデーション」を使って、1文字あたり32ピクセルで0〜9の文字を作成するプログラムです。マスク処理用の画像も同時に作成します。ただし、セーブ機能すらついていないので、真にただのサンプルです。
HutidoriPrint縁取り文字を出力するPrintEx関数とそのサンプル。

[お堅い読み物][再利用可能な関数][ゴミ箱][このページのトップ]
KENのホームへもどる


言うまでもないと思いますが、 http://www5b.biglobe.ne.jp/~yone-ken/を含む、
下位ディレクトリ(フォルダ)の一部の画像データをのぞく
データ類、文章、ソースコードは私、よねKENに著作権があります。

e-mail:yone_ken00@hotmail.com