4th MEDIA(フォースメディア)対応の大型液晶テレビ欲しい!
ナオキさんありがとう。
4th MEDIA(フォースメディア)対応の大型液晶テレビ欲しい!
ナオキさんありがとう。
本語版 Visual Basic 6.0 につきましては 6 月 30 日で一旦提供を中止させていただきました。しかし、Visual Basic 6.0 で開発されたアプリケーションは現在でも数多く存在し、それらのシステム メンテナンスのために提供が望まれております。そのため、多くのお客様からのご要望があったことを受け、この度 MSJVM への依存性を排除した形式を作成しなおし提供を再開する運びとなりました。現在、日本語版 Visual Basic 6.0 は MSDN サブス%
まぁ、あまり使う機会はないのですが、
職場ではVB6な保守案件がゴロゴロしてますので、
これはありがたいかもしれない。
(私以外の職場の人にとって。)
Windows Mobile 5.0 Developer Resource Kit の DVD を 注文してください。送料および手数料はユーザーの負担となります。
郵送では待ちきれませんか。 キットのサブセットを今すぐダウンロードしてください。 (879.8MB)
ちょうど[es]もあることだし何か作ってみたいなと思う。
思うだけ。
話は変わるが、最近、[es]のランチャソフトにお気に入りを登録するようにしている。
そうすることで、規定のブラウザが起動して、
接続して、
特定のサイトに行くまでを実行してくれるため(関連づけで)、
ブラウザをランチャに登録することに比べて、結構、便利なのだ。
仕事は楽しいものじゃなくてはオカシイでしょ?
仕事を楽しもうという姿勢が大事であるという事であれば同意です。
しかし、それを額面通り受け取ってしまう大半の人は
仕事に取り組めない言い訳を自分にするようになるだけだと思う。
そりゃ、仕事が楽しいに越したことはない。
そうだったら幸せだなとは思う。
だって、対価を貰った上に「楽しい」を貰えるのはうれしい。
でも、それを当然にしてしまったら仕事に取り組めない言い訳を自分にし始めるだけだと思う。
仕事は、対価との交換だから、「楽しい」という保証は無いのだ。
対価を貰う以上、楽しく無くてもやらなくてはいけないのが「仕事」である。
だから、「楽しい」は向こうからやって来ない。
だから、もし、仕事に「楽しい」を求めるのであれば、
「仕事は楽しい」
ではなく
「仕事を楽しむ」
になるだろう。
つまり、「楽しい」という付加価値を与えることができるのは、仕事に取り組む自分自身以外にはない。
それに気づける人は確かに「仕事は楽しい」のかもしれない。
が、それに気づけない人は、仕事に取り組むための敷居があがってしまい自分に言い訳を始める。
だから、その敷居をまたげないものにとっては、
「仕事が楽しいなんて保証はないし、求めるものでもない。
対価を貰っている以上、交換でやらなくてはいけないものだ。
楽しかったら、儲けもの。」
くらいの意識の方が楽ではないかと思うのである。
まぁ、そんな私は、それなりに楽しく仕事をしていますが。
格差社会とは、マスコミが作り出した妄想でしかない。
実際は、過去に比べて、かなり格差の無い社会になってきたと感じる。
頑張って成果が出ればそれが評価される土壌も、
まだまだではあるが、生まれつつあるし、
頑張ろうとしても頑張れない層に対してのフォローも手厚い(日本は過保護だと思っている。)。
何よりも、低所得層と言われる人たちでも、
十分に生活ができる豊かさを日本は獲得している。
むしろ、低所得でも良いから好きなことをする。
といった選択しが増えたわけで、格差社会というのは完全な過ちである。
仕事が生き甲斐な人もいれば、そうではない人もいる。
そうでは無い人が「仕事が生き甲斐」と誤魔化す事無く、
「仕事は自分が生きるための糧を得る場」であり、
本来やりたいと思うことに時間を割くことができる。
今は、それが可能な社会であり、「格差社会」とはただの妄想である。
カスタムコントロールのプロパティの型をコントロールにしたい時に必要なTypeConverterの抽象クラスです。
各、コントロール毎にTypeConverterを一から作るのはめんどくさいので、抽象クラスを作っておいて、継承先で型を指定するプロパティをオーバライドする事で指定の型のTypeConverterを作成しています。
001 using System;
002 using System.Drawing;
003 using System.Reflection;
004 using System.Collections;
005 using System.ComponentModel;
006 using System.ComponentModel.Design;
007 using System.ComponentModel.Design.Serialization;
008 namespace NAL6295.Web.UI.Controls
009 {
010 /// <summary>
011 /// コントロールのリストと選択されたコントロールの文字列を相互変換するコンバータの抽象クラス
012 /// </summary>
013 public abstract class ControlConverterAbstract:System.ComponentModel.StringConverter
014 {
015
016 /// <summary>
017 /// 選択リストに追加したいコントロールの型情報
018 /// </summary>
019 protected abstract System.Type ControlType{get;}
020
021
022
023 /// <summary>
024 /// 値リストのサポートを許可する
025 /// </summary>
026 /// <param name="context"></param>
027 /// <returns></returns>
028 public override bool GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext context)
029 {
030 return true;
031 }
032
033 /// <summary>
034 /// 値リストの作成
035 /// </summary>
036 /// <param name="context"></param>
037 /// <returns>デザイン画面に存在するControlTypeプロパティで指定されたコントロールのリストを取得しそのIDリストを返す</returns>
038 public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(System.ComponentModel.ITypeDescriptorContext context)
039 {
040 ArrayList selectionList = new ArrayList();
041
042 foreach(System.Web.UI.Control item in GetControlList(context))
043 {
044 selectionList.Add(item.ID);
045 }
046
047 return new System.ComponentModel.TypeConverter.StandardValuesCollection(selectionList);
048 }
049
050 /// <summary>
051 /// 文字列型から指定された型への変換
052 /// 選択リストに無い文字列が指定されていたときは、String.Emptyを返す
053 /// </summary>
054 /// <param name="context"></param>
055 /// <param name="culture"></param>
056 /// <param name="value"></param>
057 /// <returns></returns>
058 public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
059 {
060 if(value is string)
061 {
062 foreach(System.Web.UI.Control item in GetControlList(context))
063 {
064 if(item.ID == (string)value)
065 {
066 return base.ConvertFrom(context, culture, value);
067 }
068 }
069 return string.Empty;
070 }
071 return base.ConvertFrom(context, culture, value);
072 }
073
074 /// <summary>
075 /// 指定された型のリストを返す
076 /// </summary>
077 /// <param name="context"></param>
078 /// <returns></returns>
079 private object[] GetControlList(ITypeDescriptorContext context)
080 {
081 IReferenceService service = (IReferenceService)context.GetService(typeof(IReferenceService));
082 return service.GetReferences(ControlType);
083 }
084
085
086 }
087
088 }
089
090
使用例
001 public sealed class TextBoxConverter:ControlConverterAbstract
002 {
003 protected override Type ControlType
004 {
005 get
006 {
007 return typeof(TextBox);
008 }
009 }
010
011 }
このペーパーでは、.NET Framework に組み込まれているライセンス処理方式についての詳しい情報を提供します。また、利用可能な各種のライセンス処理方式と、一部の方式を .NET Framework で実装する方法について説明します。.NET のコントロールとコンポーネントのプロとしてやっていくためには、これらの事柄を理解する必要があります。
そのうち使いそうなので、ずいぶん前にメモっておいたURLをここに貼り付け。
URLに日本語を利用していて、
URLEncodeしてwebフォームにアクセスしても、
そのままだとレンダリングされたformタグのaction属性が、
デコードされたURLになっている。
そのため、ポストバック時にアクセスするURLはEncodeされていない。
それを回避するにはglobal.asaxのPreRequestHandlerExecuteイベント内で、
下記のコードを記述すればよい。
System.Web.HttpContext.Current.RewritePath(System.Web.HttpContext.Current.Request.Url.AbsolutePath);
実際はそのイベントじゃなくても、ある程度許容範囲がある。
RequestEndイベント内でもOKだった。
VB6の話。
VB6はメソッドの引数につけるByVal,ByRefを省略するとByRefでした。
そこで、こんなコード。
(良いサンプルが思いつかなかった・・・)
Private Sub やってはいけない(hoge As String,RecordCount As Integer) RecordCount = なんらかを実行して件数を返すらしい(hoge) End Sub
引数として渡されたQueryを実行し、
RecordCountに実行結果を返しているらしいが、
やるなら、
Private Sub やってはいけない(ByVal hoge As String,ByRef RecordCount As Integer) RecordCount = なんらかを実行して件数を返すらしい(hoge) End Sub
と書いておかないと、
Queryは値渡しで使われるだけ
RecordCountは参照渡しで、やってはいけないサブプロシージャ内でセットされる。
という事が読み取れない。
実際は、参照渡しは、それが回避不可能な時のみ利用するに限るので、
下記のように引数で値を返さないように修正する。
Private Function やってはいけない(ByVal hoge As String) As Integer Dim recordCount As Integer recordCount = なんらかを実行して件数を返すらしい(hoge) やってはいけない = recordCount End Function
値渡し、参照渡しの宣言を省略しないでね。
参照渡しは回避できるなら回避しようね。
ということ。