Archive for 11月, 2008
簡単エディタ
by achi on Nov.25, 2008, under プログラム
最近歳のせいか物忘れが激しくなってきた。ふとした事もしばらく他の事を考えると忘れてしまう。大切な用事でも、だ。
そこで簡単にメモに残せるものを作ってみた。
付箋やメモ帳など便利なツールもそれなりに存在するが、日付や時間、簡単にタイトルだけ、なんて言うわがままな保存方法にはなかなか対応できない。
この「簡単エディタ」は、何も書かずにボタンを押すだけでも日付と時間を記録する。もちろんそれだけでは何があったのかを思い出す事は難しいだろう。
そこで「タイトルだけ」というものも用意している。詳細に中身を残したければ自由に記述でき、印刷も可能。
ただし記録した内容は個別に消すことはできない。
記録するファイルは単純なテキストファイルであるため、後で中身を直接編集することや、不必要な項目だけ削除などが可能。
まあ、性格に合っていると感じた方のみお使い下さい。
LZHで圧縮しています。どこかフォルダを作成して保存し、直接起動させます。
記録用のファイルは本体と同じフォルダ内に作成されます。
動作確認はWindows2000,WindowsXP/SP3,WindowsVistaです。Framework1.1が必要です。
VisualStudio.NET2003で作成しました。
フォーム間連携
by achi on Nov.25, 2008, under VB.NETテクニック
データグリッドへ表示した列の内容を別のフォームへ渡す。
渡す側のフォーム(データグリッド表示後)
Public Form4 As New Form4
Public MeArray As New ArrayList
Public Sub New(ByVal fr As Form4)
MyBase.New()
Form4 = fr
InitializeComponent()
End Sub
Private Sub myDataGrid_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChanged
Const RowRule As Integer = 18 ‘RowCount固定している。実際にはTable.Rows.Count - 1 など
Dim cm As CurrencyManager = CType(DataGrid1.BindingContext(DataGrid1.DataSource, DataGrid1.DataMember), CurrencyManager)
Dim dr As DataRow = CType(cm.Current, DataRowView).Row
For i As Integer = 0 To RowRule
MeArray.Add(dr.ItemArray(i))
Next
If Form4 Is Nothing = False Then
Form4.OurArray = Me.MeArray
End If
Form4.Show()
Me.Hide()
End Sub
受け取り側のフォーム
‘Form3の配列を取得
Private Form3 As Form3
Private mHensu As New ArrayList
Public Property OurArray() As ArrayList
Get
Return mHensu
End Get
Set(ByVal Value As ArrayList)
For i As Integer = 0 To 18 ‘行の項目数を固定しているため
mHensu.Add(Value(i))
Next
End Set
End Property
ファイルサーバー接続&ドライブ割り当て
by achi on Nov.25, 2008, under VB.NETテクニック
ファイルサーバーに接続してログインし、必要なフォルダをドライブ割り当てして作業するケースでの手法。作業後はドライブを切断する。
Imports System.Data.OleDB
Public Declare Function WNetAddConnection2 Lib “mpr.dll” Alias “WNetAddConnection2A” (ByRef lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Integer) As Integer
Public Declare Function WNetCancelConnection Lib “mpr.dll” Alias “WNetCancelConnection2A” (ByVal lpName As String, ByVal lpPlof As Integer, Optional ByVal fForce As Boolean = False) As Boolean
Public Structure NETRESOURCE
Public dwScope As Integer
Public dwType As Integer
Public dwDisplayType As Integer
Public dwUsage As Integer
Public lpLocalName As String
Public lpRemoteName As String
Public lpComment As String
Public lpProvider As String
End Structure
Private Const RESOURCE_CONNECTED As Integer = &H1
Private Const RESOURCETYPE_ANY As Integer = &H0
Private Const RESOURCEDISPLAYTYPE_SHARE As Integer = &H3
Private Const CONNECT_UPDATE_PROFILE As Integer = &H1
Public Function ConnectSrv(ByVal pstrRemoteName As String, ByVal pstrUID As String, ByVal pstrPWD As String) As Long
Dim typNetResource As NETRESOURCE
Dim lngRet As Long
With typNetResource
.dwScope = RESOURCE_CONNECTED
.dwType = RESOURCETYPE_ANY
.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
.lpLocalName = “Z:” ‘実際には空きドライブを検索するのがベター
.lpRemoteName = pstrRemoteName
End With
lngRet = WNetAddConnection2(typNetResource, pstrPWD, pstrUID, CONNECT_UPDATE_PROFILE)
If lngRet = 0 Then
TextBox1.Text = “Connected”
Else
TextBox1.Text = “Disconnect”
End If
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Cn As New OleDbConnection(”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Z:\xxx\xxx.mdb”) ‘今回はmdbを操作
Dim SQLCm As OleDbCommand = Cn.CreateCommand
Dim Adapter As New OleDbDataAdapter(SQLCm)
Dim Table As New DataTable
SQLCm.CommandText = “SELECT * FROM xxx ORDER BY xxx.xxx”
Adapter.Fill(Table)
DataGrid1.DataSource = Table
‘実作業
Table.Dispose()
Adapter.Dispose()
SQLCm.Dispose()
Cn.Dispose()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim RmHost As String = “\\サーバーアドレス\フォルダ”
Dim RmUID As String = “ユーザー名”
Dim RmPWD As String = “パスワード”
ConnectSrv(RmHost, RmUID, RmPWD)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim result As Boolean
result = WNetCancelConnection(”Z:”, CONNECT_UPDATE_PROFILE, True)
Debug.WriteLine(result.ToString())
If result = “0″ Then
TextBox1.Text = “Disconnect”
Else
TextBox1.Text = “Connected”
End If
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
WNetCancelConnection(”Z:”, CONNECT_UPDATE_PROFILE, True)
Me.Close()
End Sub
文字列切断関数
by achi on Nov.25, 2008, under VB.NETテクニック
VB.NETを使用していて、標準のPrintDocumentコントロールを使用すると、用紙幅を検知できないため、自動で折り返しが利かない。逃げの手ではあるが強制的に改行させる関数を作ってみた。
‘文字列切断関数
‘ rsltStr = fStrCut(MyString,Keta)
Private Function fStrCut(ByVal MyString As String, ByVal Keta As Integer) As String
If Keta < 0 Or Keta > 70 Then
fStrCut = MyString
MsgBox(”正しい桁ではない”, vbOKOnly, “Column Error”)
Exit Function
End If
If Len(MyString) < Keta Then
fStrCut = MyString
Exit Function
End If
‘文字列の長さ
Dim stringLen As Integer = Len(MyString)
If stringLen = Keta Then
fStrCut = MyString
Exit Function
End If
‘行数
Dim rowCount As Integer = Fix(stringLen / Keta)
‘最後の行の長さ
Dim lastRowLen As Integer = stringLen Mod Keta
‘出力用文字列を格納する動的配列
Dim stringArray As New ArrayList
‘文字列切り出し
For fi As Integer = 0 To rowCount - 1
Dim fk As Integer = Keta * fi + 1
Dim str As String = Microsoft.VisualBasic.Strings.Mid(MyString, fk, Keta) & vbCrLf
stringArray.Add(str)
Next fi
If lastRowLen <> 0 Then
Dim ostr As String = Microsoft.VisualBasic.Strings.Right(MyString, lastRowLen)
If ostr <> “” And lastRowLen <> Keta Then
stringArray.Add(ostr)
End If
End If
Dim returnStr As String = “”
For fj As Integer = 0 To stringArray.Count - 1
returnStr = returnStr & stringArray(fj)
Next fj
Return returnStr
End Function
シューティングスター(ゲーム)
by achi on Nov.05, 2008, under プログラム
その昔、BASICで公開されていたゲームプログラムをVB6でアレンジしたもの。動作にはランタイムが必要です。
またこのゲームは弱視の方々を意識して作られています。音声が必要な場合、スピーチエンジンが別途必要です。スクリーンリーダーなどをお使いの方は音声が重複することがありますので、リーダーの音声を一時的に停止することをおすすめします。
MS Agentの”マーリン”も同時にインストールされます。
インストーラーで提供しています。
動作確認:WindowsXP/SP3,WindowsXP64ED,WindowsVista
Thanks for Sakura.
ASP(ActiveServerPages)スケジュール管理
by achi on Nov.05, 2008, under プログラム
ASPによる「スケジュール管理」です。簡易な機能に限定して提供します。Windows95/98及びWindowsNT4.0環境での動作を確認しています。
曜日計算(ゼラーの公式)
by achi on Nov.05, 2008, under プログラム
JavaScript曜日計算
西暦年月日を与えると曜日を数値で返すスクリプト。「ゼラーの公式」をそのままスクリプトにしています。
ただし日付の妥当性は評価していませんので、実際に利用する場合は工夫が必要。
以下のサイトで説明しております。