-
今回は、簡単なTIPSですが、SPREADがフォーカスを持っていない時にセル枠の表示をしない設定があります。
SPREADはフォーカスを持っているときには、以下の様にアクティブセルの枠が太枠で表示されます。
SPREADコントロールの「RetainSelectionBlock」プロパティをFalseにすれば枠が通常のものになります。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'SPREADがフォーカスを持っていないときにセル枠の表示をしない設定があります。 Me.FpSpread1.RetainSelectionBlock = False End Sub
SPREADからボタンにフォーカスを移動すると、以下の様になります。 (ボタンのクリック時イベントの処理には何も記述していないので、 ボタンをクリックすることでフォーカスは移動します。)
=====
2016/02/29:の時の情報
PR -
データの一覧や、エクセルライクでの入力などでよく「SPREAD for Windows Forms」を使用しています。 このSPREADですが、Microsoft純正のGridViewなどよりは使い勝手がいいのですが、使い方の癖があります。
今後はいろんなTIPSを載せていこうかなと思っています。
先ずは最初に簡単なところで、SPREAD上で「Enter」キーを押下した時に次のセルに移動させる方法です。 以下の様に通常は、フォームのLoad時イベントなど設定してやります。
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'ENTER時にセルを右移動させる Dim im As New FarPoint.Win.Spread.InputMap ' 非編集セルでの[Enter]キーを「次列へ移動」とします im = Me.spdList.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), _ FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.Shift), _ FarPoint.Win.Spread.SpreadActions.MoveToPreviousColumnWrap) ' 編集中セルでの[Enter]キーを「次列へ移動」とします im = Me.spdList.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), _ FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap) im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.Shift), _ FarPoint.Win.Spread.SpreadActions.MoveToPreviousColumnWrap) End Sub
=====
2016/02/29:の時の情報
-
前回では、CSEから「PostgreSQL」に接続する方法を載せましたが、今回はオラクルへの接続についてです。
CSEでオラクルのデータベースに接続するには、「ociw32.dll」というDLLが必要な様です。 この「ociw32.dll」は通常このDLLはOracleホームディレクトリ以下のbinディレクトリに格納されています。
今回の接続テストは、同一PC上でオラクルとCSEをインストトールし行いました。 OSはWindows7で、オラクルは「Oracle Database 11g Express Edition」をインストールしました。 そこで、環境変数の「ORACLE_HOME」を設定されていることを確認します。
「Oracle Database 11g Express Edition」は、デフォルトでインストールすれば 「ORACLE_HOME」の値は「C:\oraclexe\app\oracle\product\11.2.0\server」になっているはずです。
それとPATHが通っていることを確認します。 「C:\oraclexe\app\oracle\product\11.2.0\server\bin;」が、 環境変数の「Path」に設定されていることを確認します。 (このパスは「ociw32.dll」が存在するフォルダです)
では実際にオラクルへの接続を行います。 下図はCSEからの接続時の様子です。 テストユーザとして「TEST」での接続を行います。 尚、このユーザは既にパスワードを「TEST」とし、「DBA」権限を与えてあります。 接続文字列として「localhost:1251/xe」を指定します。
接続文字列は host[:port][/service_name]です。
・host:接続先サーバのIPアドレス(今回は同一PC上なので「localhost」)
・port:ポート番号(デフォルト:1251)
・service_name:接続先のデータベース・サービスの名前です。Oracle Database XEのサービス名はXEです
接続後は以下の表示になります。
実際にSQLの実行を行ってみます。
システム時刻の取得を行いました。
=====
2016/02/27:の時の情報
-
VB.NETのコンソールプログラムでのタイマ割込み処理を行う場合、 スレッドタイマ(System.Threading.Timer)を使った方法があります。
フォームを持ったプログラムの場合には、Windowsタイマ(System.Windows.Forms.Timer)を 使えば簡単に割込み処理ができます。フォームにWindowsタイマのコントロールを張り付けて 各種のプロパティを設定すればOKです。
ただ、コンソールプログラムではフォームが無い場合が普通です。 そのため、タイマコントロールとは違う、スレッドタイマを使います。 以下のソースを見てください。
Main関数の処理の最初で、タイマイベント用の関数を宣言しています。 この関数はタイマ割込みが発生した時に実行する関数で、
次の行で生成されるタイマスレッドから実行されるデリゲートです。 タイマの間隔は1000msecに設定しています。
タイマイベントの関数では、タイマ割込みが在った証拠のフラグをONしているだけで、 メイン側ではそのフラグのONを見て、対応する処理を行っています。 例としては、現在時刻を表示しているだけです。
無限ループの中で、Sleep関数で待ち時間を使っています。 このSleep関数の行が無い状態でこのプログラムを実行すると、 CPU時間が非常に多く割かれてしまいます。 Sleepを入れることで、CPU時間はほぼ0%に近くなるはずです。
Module Test 'タイマ処理フラグ Private mblnTimning As Boolean = False 'タイマ Private mTimer As System.Threading.Timer ' 値渡し・参照渡しのテスト Public Sub Main() 'タイマイベントの関数 Dim timerDelegate As System.Threading.TimerCallback = _ New System.Threading.TimerCallback(AddressOf TimerEvent) 'タイマの生成と開始(1000msec毎のイベント呼び出し) mTimer = New System.Threading.Timer(timerDelegate, Nothing, 0, 1000) '無限ループ While True 'タイマ処理フラグONの確認 If mblnTimning = True Then 'タイマ処理フラグOFF mblnTimning = False '処理の例として時刻表示 Console.WriteLine(String.Format("Time = {0}", Now.ToString)) End If '10msecの待ち処理(システムに処理を返す) System.Threading.Thread.Sleep(10) End While End Sub ' タイマイベント Public Sub TimerEvent(ByVal aobj As Object) 'タイマ処理フラグON mblnTimning = True End Sub End Module
このソースは無限ループの処理になっていて、無限ループを抜ける処理については 考えていませんので、何か対策が必要です。
無限ループの方法はあまりスマートでは無いのですが、常駐させる様なプログラムでは有効ではないでしょうか。
=====
2016/02/23:の時の情報
-
以前の記事の中で「SQL Server」の「BCP」コマンドを取り上げましたが、 その時のコマンドは以下の様になっていました。 このコマンドは出力されるファイルが文字形式として書き込まれます。 (データベースの中のネイティブ形式ではないということです)
bcp TEST.dbo.TABLE_A out "table_a.txt" -c -Slocalhost\SQLEXPRESS -T
このコマンドで出力されるテキストファイルのコードは「Shift-JIS」形式になるはずです。
これに対応するインポートコマンドは同様に「-c」オプションをつけて以下の様になります。bcp TEST.dbo.TABLE_A in "table_a.txt" -c -Slocalhost\SQLEXPRESS -T
今回はUnicodeでのインポート・エクスポートの必要がありましたので、「-c」オプションを「-w」に変えて行います。
以下はエキスポートコマンドです。bcp TEST.dbo.TABLE_A out "table_a.txt" -w -Slocalhost\SQLEXPRESS -T
このコマンドで出力されるテキストファイルのコードがUnicodeとなります。
以下はインポートコマンドです。bcp TEST.dbo.TABLE_A in "table_a.txt" -w -Slocalhost\SQLEXPRESS -T
=====
2016/02/17:の時の情報