Take it easy!

Archive for 11月, 2008

簡単エディタ

by achi on Nov.25, 2008, under プログラム

最近歳のせいか物忘れが激しくなってきた。ふとした事もしばらく他の事を考えると忘れてしまう。大切な用事でも、だ。
そこで簡単にメモに残せるものを作ってみた。
付箋やメモ帳など便利なツールもそれなりに存在するが、日付や時間、簡単にタイトルだけ、なんて言うわがままな保存方法にはなかなか対応できない。
この「簡単エディタ」は、何も書かずにボタンを押すだけでも日付と時間を記録する。もちろんそれだけでは何があったのかを思い出す事は難しいだろう。
そこで「タイトルだけ」というものも用意している。詳細に中身を残したければ自由に記述でき、印刷も可能。

ただし記録した内容は個別に消すことはできない。
記録するファイルは単純なテキストファイルであるため、後で中身を直接編集することや、不必要な項目だけ削除などが可能。

まあ、性格に合っていると感じた方のみお使い下さい。

LZHで圧縮しています。どこかフォルダを作成して保存し、直接起動させます。
記録用のファイルは本体と同じフォルダ内に作成されます。

動作確認はWindows2000,WindowsXP/SP3,WindowsVistaです。Framework1.1が必要です。
VisualStudio.NET2003で作成しました。

ダウンロードはこちらから

1 Comment more...

フォーム間連携

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

Leave a Comment more...

ファイルサーバー接続&ドライブ割り当て

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

19 Comments more...

文字列切断関数

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

Leave a Comment more...

シューティングスター(ゲーム)

by achi on Nov.05, 2008, under プログラム

 その昔、BASICで公開されていたゲームプログラムをVB6でアレンジしたもの。動作にはランタイムが必要です。

またこのゲームは弱視の方々を意識して作られています。音声が必要な場合、スピーチエンジンが別途必要です。スクリーンリーダーなどをお使いの方は音声が重複することがありますので、リーダーの音声を一時的に停止することをおすすめします。
MS Agentの”マーリン”も同時にインストールされます。
インストーラーで提供しています。

ダウンロードはこちらから

動作確認:WindowsXP/SP3,WindowsXP64ED,WindowsVista
Thanks for Sakura.

2 Comments more...

ASP(ActiveServerPages)スケジュール管理

by achi on Nov.05, 2008, under プログラム

ASPによる「スケジュール管理」です。簡易な機能に限定して提供します。Windows95/98及びWindowsNT4.0環境での動作を確認しています。

ダウンロードはこちらから

Leave a Comment more...

曜日計算(ゼラーの公式)

by achi on Nov.05, 2008, under プログラム

JavaScript曜日計算

西暦年月日を与えると曜日を数値で返すスクリプト。「ゼラーの公式」をそのままスクリプトにしています。
ただし日付の妥当性は評価していませんので、実際に利用する場合は工夫が必要。
以下のサイトで説明しております。

http://worldstep.net/files/youbi.html

Leave a Comment more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...

Archives

All entries, chronologically...