情けないことをお聞きします

タグの編集
投稿者 たかみー  (その他) 投稿日時 2008/12/25 04:43:35
始めまして、初心者です。

仕事でVB2005を使う必要ができ、あわてて講習会(3日間)に行ったのですが、日程の都合上VB2008に参加できなくてVB6.0を習ってきました。
練習に講習会で使ったテキストのプロジェクトをVB2008でも作ってみたのですが、使うメソッド(?)が随分違うため全く進みません。

上手なヘルプの使い方や、VB6.0→VB2008の逆引き(?)辞典などの参考書籍等、何か初心者でもわかりやすくメソッドを調べる方法を教えて下さい。

ちなみに今詰まってるのは

1.日付の表示(年月日+曜日)
VB6.0では lblDate.Caption=Format(Date,"yyyy/mm/dd(dddd)")
なのですが、VB2008では出来ません(T_T)
同じようにFormat関数を使うのでしょうか?
それともDateTime.Now.ToLongDateStringをもじるのでしょうか?


2.フォントの変更(チェックボタンをチェックしたらフォントが変更される。If文使用)
VB6.0では lblDate.Font.Bold=True でした。
色々やってみたのですが、青破線が出てしまい撃沈(T_T)
lblDate.Text=Format(FontStyle.Bold)又は
lblDate.FontStyle.Bold=true
かな、と思ったのですが全く動きません。

もしよろしければご返答下さいm(__)m

投稿者 るきお  (社会人) 投稿日時 2008/12/25 05:59:43
こんにちは。

VB6とVB2005は初心者の方には大分異なって感じられると思います。

VB6→VB2005,2008の逆引きはWebなどであるかもしれませんが、私は把握していません。
あってもあまり網羅することはできないのではないかと思っています。

ただし、VB2005, 2008にはVB6プログラマのための機能がいくつかあり、手助けになります。

1つはVB6コードのアップグレード機能です。
VB2005,2008でプログラム中にツールメニューの「Visual Basic 6.0 コードのアップグレード」をクリックすると小さな窓が出てきます。
ここにVB6のコードを入力して、「アップグレード」ボタンを押すとVB2005,2008に翻訳してくれます。


ただし、多少助けになる程度で翻訳できないケースも多々あります。
また、翻訳されたコードは後述する「互換ライブラリ」を使用するコードになる傾向があり、一般的なVB2005,2008プログラマが書くコードとは少し違ったものになることが多いです。

2つ目はVB6の互換ライブラリです。
VB6では使えたのに、VB2005,2008では使えなくなっているメソッド・関数がたくさんありますが、この互換ライブラリを使えば、VB2005,2008でもVB6のメソッド・関数が使用できます。
…といっても、少し名前や使い方が変わっていたりはするのですが・・・。
使用方法はMicrosoft.VisualBasic.Compatibility.dllに参照設定して、コードの先頭にImports Microsoft.VisualBasic.Compatibilityと書くだけです。
これで「VB6.」と入力するとVB6時代の関数やメソッドが使用できます。
たとえば、Format関数と日付を整形して表示することもできます。
※参照設定するには「プロジェクト」メニューの「参照の追加」です。

   
Imports Microsoft.VisualBasic.Compatibility

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load

        MsgBox(VB6.Format(Now, "yyyy/mm/dd(dddd)"))

    End Sub
End Class



他にもVB6プロジェクトをまるごとVB2005,2008に変換する機能などもあります。

>1.日付の表示(年月日+曜日)
>VB6.0では lblDate.Caption=Format(Date,"yyyy/mm/dd(dddd)")
   
lblDate.Text = Now.ToString("yyyy/MM/dd(dddd)")

※ただし、曜日は実行する国ごとに異なる表示になります。国(≒文化)を指定する方法もありますがとりあえず割愛します。
参考:http://msdn.microsoft.com/ja-jp/library/8kb3ddd4.aspx


>2.フォントの変更(チェックボタンをチェックしたらフォントが変更される。If文使用)
>VB6.0では lblDate.Font.Bold=True でした。
   
lblDate.Font = New Font(lblDate.Font, FontStyle.Bold)


以上は一例です。

私としてはVB6歴が講習の3日くらいであるならば、いったん忘れてVB2005やVB2008の勉強をしたほうが早いと思います。
VB2005, 2008のVB6互換機能も主流からは外れる機能ですので、せっかく新しいバージョンに進出するのであれば一般的な方法を習得した方が応用が広がると思います。

投稿者 たかみー  (その他) 投稿日時 2008/12/25 07:40:20
ご返答、そしてご指南ありがとうございます。
さっそくやってみました!
疑問1は曜日(日本語表示はできたのですが、英語表示がまだうまくいかない)のコードでまだ少し詰まっていますが、疑問2は教えていただいたコードで解決しました!
VB6.0のアップデート機能は知りませんでした!参考に頑張ってみます。
何日も悩んでいて、相談してよかったです。
また情けない質問をするかも知れませんが、その時はよろしくご指南願います。
ありがとうございました。
投稿者 るしぇ  (社会人) 投稿日時 2008/12/25 19:19:46
> 疑問1は曜日(日本語表示はできたのですが、英語表示がまだうまくいかない)のコードでまだ少し詰まっていますが
参考 URL 通りのコードを書くことがそんなに難しい???
ヘルプ(MSDN)にサンプルコードが載ってるページが多いので、
そのままコピペするだけでも7割がたできちゃいますが。。。

CultureInfo が宣言されていませんっていうエラーが出る場合は、
System.Globalization.CultureInfo と指定してみてください。
この省略しない名前空間の見つけ方は、オブジェクトブラウザを
表示して CultureInfo をキーワード検索します。

オブジェクトブラウザの表示方法は、メニューから
[表示]-[オブジェクトブラウザ]
ショートカットキー(F2とか)が設定されていれば次回からはそれで。
投稿者 たかみー  (その他) 投稿日時 2008/12/25 21:02:48
あれからも頑張って取り組んで両方なんとか解決しました。

確かにるしぇさまの言われる通り、参考URLコードを書くのは難しい事ではなかったのですが、
なぜかエラーが出てしまってダメだったのです(練習しているプロジェクトは1つではなく、こっちは動いてもこっちは動かないと複数の中で色々詰まっておりましたもので)。
でも何度か確認しつつ入力してみたら無事に動きました。

VB中学校の講義?を見直したらわかったものもありました。
勉強不足で不快にさせて申し訳ありませんでした。