2011年2月26日 星期六

產生條碼

感謝 Brad Barnhill 及他post的文章 (Thanks to Barnhill, Brad)

Barnhill 撰寫了產生條碼的DLL函式庫,讓我們可以快速地產生需要的條碼,這個已經困擾我十幾年的需求。

以下產生預設是128碼,可同時包含英文與數字,但為了簡化程式,只能輸入最多24個英文字或46個數字。

 

1. 首先加入參考 BarcodeLib.dll ,如下圖

 


 

2. 照例布置所需要的物件如下圖


最下方是一個picturebox1

 

3. 程式如下

一開始先imports函示庫

 

Imports BarcodeLib

 

 

  Dim b As BarcodeLib.Barcode = New BarcodeLib.Barcode()

//以下這幾行程式便可產生條碼圖形

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim type As BarcodeLib.TYPE = BarcodeLib.TYPE.CODE128
        b.IncludeLabel = True
        Try
            PictureBox1.Image = b.Encode(type, TextBox1.Text.Trim)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try


    End Sub

 

 //條碼存檔

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim sfd As New SaveFileDialog
        sfd.Filter = "BMP (*.bmp)|*.bmp|GIF (*.gif)|*.gif|JPG (*.jpg)|*.jpg|PNG (*.png)|*.png|TIFF (*.tif)|*.tif"
        sfd.FilterIndex = 2
        sfd.AddExtension = True
        If (sfd.ShowDialog = DialogResult.OK) Then
            Dim savetype As BarcodeLib.SaveTypes = SaveTypes.UNSPECIFIED
            Select Case (sfd.FilterIndex)
                Case 1
                    savetype = BarcodeLib.SaveTypes.BMP

                Case 2
                    savetype = BarcodeLib.SaveTypes.GIF
                Case 3
                    savetype = BarcodeLib.SaveTypes.JPG
                Case 4
                    savetype = BarcodeLib.SaveTypes.PNG
                Case 5
                    savetype = BarcodeLib.SaveTypes.TIFF
            End Select
            b.SaveImage(sfd.FileName, savetype)
        End If

 

    End Sub

 

 

通常產生的條碼會需要列印出來,此時加入PrintDocument及PrintPreviewDialog控制項,windows form加入一個預覽列印的按鈕Button3,接著再加入以下程式碼

 

  'printdocument包含所有列印所需要的資訊,
    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        e.Graphics.DrawImage(Me.PictureBox1.Image, 0, 0)
        e.Graphics.PageUnit = GraphicsUnit.Inch

    End Sub


    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        PrintPreviewDialog1.Document = PrintDocument1 'PrintPreviewDialog associate with PrintDocument.
        PrintPreviewDialog1.ShowDialog() 'open the print preview

    End Sub

完成後執行預覽列印的畫面如下:

 


2011年2月25日 星期五

vb.net列印

最近因為計畫的關係,花了些時間整理平常上課比較不會特別教的內容,

例如條碼的產生, 列印的問題, 我將.VB.NET列印的範例整理如下:

首先先產生相關物件如下圖


 

 'printdocument包含所有列印所需要的資訊,
    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

        e.Graphics.DrawString(Me.TextBox1.Text, TextBox1.Font, Brushes.Black, 100, 100)
        e.Graphics.PageUnit = GraphicsUnit.Inch


    End Sub


    '列印按鈕
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        PrintDialog1.Document = PrintDocument1 'PrintDialog associate with PrintDocument.

        If PrintDialog1.ShowDialog() = DialogResult.OK Then

            PrintDocument1.Print()

        End If

    End Sub

    '預覽列印按鈕
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        PrintPreviewDialog1.Document = PrintDocument1 'PrintPreviewDialog associate with PrintDocument.
        PrintPreviewDialog1.ShowDialog() 'open the print preview

    End Sub 

2011年1月8日 星期六

2010年9月28日 星期二

沒有輸入法的痛苦

今天去弘光科大上研習課,結果該電腦教室竟然沒有自然輸入法,也沒有新酷音輸入法,讓我習慣用許氏鍵盤的人幾乎無法打字,還有有印象記得新注音透過設定也可以改成許氏鍵盤,設定步驟如下:



按匯入後,選以下檔案即可,就不需手動設定 許氏鍵盤.KBD

 

安裝手寫輸入

今天花了半小時的時間在測試某一個字的注音,

你能猜得出" 昕 "這個字怎麼注音出來的嗎? 還有這個字 "  廓  ",我甚至花了半小時打算用倉頡來拆這個字,

後來還是放棄.後來想到我爸爸是用手寫輸入搞不好可以解決這個問題,又花了半小時來安裝手寫輸入,原來所寫輸入是要搭配微軟新注音輸入法來使用


畫面中這麼複雜的語言列是我安裝手寫輸入法與語音辨識輸入法後的結果,

 

首先安裝手寫輸入法後,我第一個遇到的問題是找不到輸入的地方,也就是下方的圖

 

原來這個功能是藏在微軟新注音的工具選單內的輸入法整合器,害我在螢幕上點滑鼠滑來滑去都沒反應.

可以參考下面的網站教學


 

當我們寫下

這個字時,旁邊會找到這個字,並且顯示注音出來,這讓我們有時候遇到特別的字不會拼音,就可以採用這種方法.

 

 

後來又想到許主任生病手不方便寫字,何不安裝語音辨識輸入法呢,又花了一個小時來學習安裝語音輸入法,原來語音輸入法是藏在office裡面的.要從控制台/新增移除程式 找到OFFICE2003


 

選 新增或移除 下一步  選擇應用程式的進階定義


 

麥克風的圖案是凹進去的才代表有辨識


 

 

好不容易安裝好之後,出現麥克風圖案,我對著麥克風講了幾分鐘的話,卻都沒有反應,差點氣死,後來才發現微軟的語音輸入是能用在微軟的瀏覽器或是WORD類的軟體,例如記事本就不能使用,GOOGLE的瀏覽器也不能使用,不過至少像MSN還可以用,算是不無小補了.

 

又花了1個小時,發現辨識的正確性會讓人氣死,還是不要推薦給許主任好了

 

2010年9月7日 星期二

java學習心得

逃避了很久,沒想到最後還是要面臨java,只好開始學囉,一開始就碰上很多挫折。

首先下載JDK,到了sun網站,怎麼找不到,原來後來被改成java SE

我下載的版本是jdk-6u21

1. 執行java testframe,出現


解壓縮後,我的電腦按右鍵選內容,進階/環境變數/系統變數/新增或修改Path,

方法1: 在最後加上 「C:\Java\jdk1.6.0_21\bin\;」

方法2:先定義JAVA_HOME為「C:\Java\jdk1.6.0_21」再到path新增「;%JAVA_HOME%\bin;」意思相同



當出現以下錯誤時應該是classpath變數還沒設


可以用 echo %classpath%來觀看目前的設定

我的電腦按右鍵選內容,進階/環境變數/系統變數/新增或修改classpath, 「.;C:\Java\jdk1.6.0_21\lib;」或者用方法2的「.;%JAVA_HOME%\lib;」

或其他jar檔案,設定好後cmd需關閉重新開啟才能套用。



2. 一開始程式寫好,javac testframe.java,然後理所當然用java testframe.class 怎麼有錯誤,原來執行class不需打附檔名,不親自動手還不容易遇到。



3.程式寫好,javac testframe.java,第二個步驟當然是 java testframe,怎麼出現錯誤,原來 java 分大小寫,確切的檔名是 java TestFrame,夠吐血了吧!



4. 開始認真寫程式了,怎麼 string myname; 怎麼不行,原來正確是 String myname; 字串的宣告s要大寫S。



5. 每一行程式結束用分號;

6. 類名要跟檔案名一致。

7. 字串也是跟VB一樣用雙引號"".

8. package:英文全部使用小寫,例如:com.xx、java.lang....。





  • 變數首字小寫代表型別, iAgeOfStudent, strInput
  • 方法應該為動詞或動詞加名詞且首字小寫,sendMessage, setSize, setLocation
  • 類別及介面名稱命名首字大寫應該用名詞。介面名稱應用形容詞。
  • 混和第一個字母小寫和內部單字的第一個字母大寫的狀況。但用駝峰命名方法。宣告類別常數的變數名稱以及ANSI 常數的變數名稱應該是以("_") 底線分隔的全大寫字。(為了易於除錯,應該避免 ANSI常數。)

    9. 開始執行,以下畫面原來是少打了附檔名,正確應該是 javac BookBuyerAgent13.java

    10. 正確編譯後,還是有錯,這時會顯示出程式內的錯誤。

    以下的錯誤是沒有 import jade.core.behaviours.*;


    11. 以下錯誤是少了內部類,  private class RequestPerformer extends Behaviour {    }



    12. 類別名稱需與檔名相同,如下圖就是不相同,所以javac會有錯誤


    13. 老問題總是發生,以下畫面還是代表附檔名忘了加。






    14. 有一個錯誤卡了好幾個禮拜,錯誤畫面如下:


    下午靈光一現,想說既然package搞不定,乾脆把BookSellerAgent.java及BookSellerGui.java的package通通加註解試看看,果然一次就成功,讓我高興的差點大聲呼喊Ya!