Archive for the ‘การเขียนโปรแกรม’ Category

แปลงเลขอารบิกเป็นเลขไทย

by บุรินทร์ รุจจนพันธุ์ on Wednesday, February 10th, 2010

การแปลงเลขอารบิกเป็นเลขไทยด้วย macro

10 ก.พ.53 เรื่องนี้ควรเขียนเมื่อหลายเดือนก่อนหน้านี้ เพราะ ผศ.ดร.จินดา งามสุทธิ ท่านอธิการบดี รณรงค์ให้ใช้เลขไทยในบันทึกข้อความ แต่ความไม่ชินและความมักง่าย ทำให้ผมเลือกใช้วิธีแปลงเลขอารบิกด้วยการ replace ถึง 10 ครั้ง เพื่อเปลี่ยนตัวเลขทีละตัว แต่ถ้าให้อัตโนมัติก็จะเข้าไปกำหนดใน autocorrect สำหรับแต่ละตัวเลข แต่ใช้ได้กับเลขหลักเดียว ก็ช่วยได้เพียงระดับหนึ่ง (วันนี้ผมเคลียร์งานเขียนแผน km ของมหาวิทยาลัยล้อกับโครงการอบรมประกันฯของ อ.ศศิวิมล แรงสิงห์ เสร็จเร็วกว่าที่คาด) จึงคิดว่าถึงเวลาที่ไม่ควรผลัดวันประกันพรุ่งอีกต่อไป เมื่อศึกษาวิธีการแทนที่ตัวเลขด้วย macro ที่เขียนแบบใช้ใน word กับ excel เผยแพร่ใน thaiall.com/vb  เพราะ macro ใช้ visual basic script ใน module สำหรับการประมวลผล
     แหล่งเก็บ macro มี 2 แบบคือ ใน normal หรือ ใน document ถ้าเป็นแบบใน document เมื่อสร้างเอกสารก็จะติดเอกสารไป เปิดเอกสารใหม่จะไม่พบ macro เดิม แต่ถ้าเป็นแบบใน normal จะมี macro ติดอยู่ใน template ของ word ทำให้เปิด word แล้วเรียกใช้ macro ได้ทุกครั้ง สำหรับวิธีสร้างและใช้ macro นั้นเริ่มต้นด้วยการคัดลอกโค้ดไปใส่ใน module ของ macro แล้วสั่ง run ใน macro เมื่อต้องการเปลี่ยนตัวเลขทั้งหมดเป็นเลขไทย ซึ่งโค้ดได้สั่งแทนที่ทั้ง 10 ตัวอักษรเป็นเลขไทยอัตโนมัติ การนำไปใช้สำหรับ word กับ excel ต่างกันเล็กน้อย ถ้านำไปใส่ไม่ได้ โปรดติดต่อช่างเทคนิคใกล้บ้าน เพราะส่งเข้า word ครั้งเดียว แต่ใช้งานได้ตลอดไป .. ต่อไปผมก็จะเริ่มใช้แล้ว เพราะ replace 10 ครั้ง ไม่ดีแน่

source code : macro of word

Sub arabictothai()
  For i = 0 To 9
  With Selection.Find
      .Text = Chr(48 + i)
      .Replacement.Text = Chr(240 + i)
      .Wrap = wdFindContinue
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
  Next
End Sub

source code : macro of excel

Sub arabictothai()
  For i = 0 To 9
  Cells.Replace What:=Chr(48 + i), Replacement:=Chr(240 + i)
  Next
End Sub

คำสั่ง application.openforms

by บุรินทร์ รุจจนพันธุ์ on Thursday, January 28th, 2010

mdiparent กับ 2 form

28 ม.ค.53 ปกติผมไม่เขียนเรื่องเทคนิคการโปรแกรมใน blog เพราะมีรายละเอียดมาก และเขียนไว้ในเว็บเพจอยู่แล้ว แต่หัวหน้าแนะว่าอยากให้ เขียนเรื่อง application.openforms ซึ่งเป็นวิธีการส่งค่าระหว่างฟอร์มลูกใน mdiparent ซึ่งผมเคยเขียนไว้ในเว็บเพจว่าใช้วิธีอ้างผ่าน mdiparent แต่ทั้ง 2 วิธีที่จะนำเสนอนี้มีความแต่ต่างกันชัดเจน ซึ่งผมจะเขียนเรื่องนี้ไว้ใน
+ http://www.thaiall.com/vbnet/testtoolbox.htm
ขั้นตอนที่ 1 การสร้างคอนโทล เพื่อเตรียมความพร้อม
    
สร้าง mdi parent form และ windows form ขึ้น 2 form เมื่อเปิด solution ให้เรียกทั้ง 2 ฟอร์มมาแสดงใน mdi parent form ทันที โดยใส่คำสั่งในโหลดของเอ็มดีไอ คือ dim f1 = new form1 : f1.mdiparent = me : f1.show() : dim f2 = new form2 : f2.mdiparent = me : f2.show() แล้วในฟอร์มทั้งสองมี ปุ่มและเท็คบ็อกอย่างละหนึ่ง
ขั้นตอนที่ 2 ทดสอบคำสั่งที่ใช้ส่งค่าเมื่อกดปุ่ม
    กรณีที่ 1 กรอกข้อมูลและสั่งจากฟอร์มหนึ่งแต่มีผลในฟอร์มสอง ใส่คำสั่งในปุ่มของฟอร์มหนึ่งว่า For Each f As Object In MDIParent1.MdiChildren : If UCase(f.name) = “FORM2″ Then : Dim f2 As Form2 = f : f2.TextBox1.Text = Me.TextBox1.Text : MsgBox(“wait”) : f2.Close() : End If : Next
    กรณีที่ 2 ทดสอบตามที่หัวหน้าแนะนำให้ใช้ application.openforms โดยสั่งจากฟอร์มสองแต่มีผลในฟอร์มหนึ่ง โดยใส่คำสั่งในปุ่มของฟอร์มสองว่า Dim f As Form : f = Application.OpenForms.Item(“form1″) : For Each i As Object In f.Controls : If UCase(i.name) = “TEXTBOX1″ Then : i.text = “abc” : End If : Next : MsgBox(“wait”) : f.Close()
ขั้นตอนที่ 3 อธิบายความแตกต่าง
     ทั้ง 2 กรณีต่างกันที่ กรณีที่ 1 อ้างอิงฟอร์มเป้าหมายผ่าน mdiparent1 แล้ววนลูปตาม object ทั้งหมดในนั้น โดยมองหาวัตถุที่ชื่อ FORM2 เมื่อพบก็จะส่งเข้าวัตถุชิ้นใหม่ให้อ้างอิง แล้วจึงเรียกใช้ textbox1 ตามวัตถุประสงค์ แต่กรณีที่ 2 อ้างอิงฟอร์มเป้าหมายผ่าน Application.Openforms ซึ่งเรารู้ว่า Form1 เปิดอยู่ แล้วก็วนลูปเข้าไปใน controls ทั้งหมด เมื่อพบ textbox1 ก็ดำเนินการทันที

ลบปุ่มบันทึกจาก phpbb

by บุรินทร์ รุจจนพันธุ์ on Monday, September 14th, 2009

14 ก.ย.52 ระบบเว็บบอร์ด phpbb ได้รับความนิยมอย่างมากในโลกไซเบอร์ มาวันนี้คุณธรณินทร์ สุรินทร์ปันยศ ทีมงานสำนักเทคโนโลยีสารสนเทศเลือกใช้ phpbb3 เพื่อบริการเว็บบอร์ดในมหาวิทยาลัย (อีกครั้ง) ซึ่งเป็นระบบที่สำนักงานจังหวัดฯ เคยติดตั้งเมื่อหลายปีก่อนเช่นกัน และผมติดตั้ง pnphpbb2 ใน thaiabc.com ตั้งแต่วันที่ 16 มิ.ย.48 ซึ่งตอนนั้นผมเลือกใช้เป็นส่วน plug-in ใน postnuke ส่วนรุ่นใหม่คือ phpbb3 ใน thaiabc.com นั้นมีตั้งแต่วันที่ 5 ม.ค.51 มาวันนี้พบว่าผู้ใช้มีปัญหาการเลือกกดปุ่มระหว่าง บันทึก กับ ตั้งกระทู้ หากกดปุ่ม บันทึก ก็จะกลายเป็นกระทู้ฉบับร่าง หากจะนำมาตั้งเป็นกระทู้ ก็จะมีขั้นตอนที่ซับซ้อน จึงตัดสินใจยกเลิกปุ่มนี้ออกไป
     วิธีการลบปุ่มบันทึก เริ่มจากก็นั่งหาแบบมองด้วยตาเปล่าในระบบแก้ template ของ phpbb3 กับคุณ bank แต่มองไม่เห็น จึงต้องใช้วิธีกดปุ่มตั้งกระทู้ และ view source จนพบคำว่า save แล้วใช้ search ของ windows หาคำว่า save ใน folder phpbb3 ของ thaiabc.com พบในแฟ้ม posting_editor.html บรรทัดที่ 184 แล้วก็ลบทั้งบรรทัด บรรทัดที่ลบคือ <!– IF S_SAVE_ALLOWED –> <input type=”submit” accesskey=”k” tabindex=”8″ name=”save” value=”{L_SAVE}” />&nbsp; <!– ENDIF –>
     เพียงเท่านี้ก็ไม่ต้องเกรงว่าผู้ใช้มือใหม่จะกดปุ่ม บันทึก แล้วไม่รู้ว่าอะไรเป็นอะไร แล้วโทรมาถามกันบ่อย ๆ หรือไม่ก็บอกว่าระบบผิดพลาดแล้วบ่นอยู่ในใจคนเดียว สิ่งที่ทีมงานเกรงว่าจะเกิดขึ้นก็จะไม่เกิดขึ้นอย่างแน่นอน แต่ปัญหาที่ hotmail.com เปลี่ยนนโยบายเรื่อง security ขอให้กรอก captcha บ่อย ๆ ผู้ใช้ก็มาบอกว่าเป็นความผิดพลาดของระบบอีเมลมหาวิทยาลัย ผมก็ถึงกับอึ้งว่า .. ทุกสาเหตุของปัญหามาจากสำนักไอทีหรือนี่ ก็คงเป็นหน้าที่ที่ทีมงานต้องช่วยกันวิเคราะห์ความเสี่ยง และหามาตรการป้องกันในแต่ละปัจจัยเสียงกันไปให้ครบเท่าที่จะสามารถทำได้

ทดสอบคัดลอกบล็อกแล้วบันทึกไว้ใน /wordpress

by บุรินทร์ รุจจนพันธุ์ on Tuesday, May 26th, 2009

เย็น 26พค52 1) ปิดบทความไอทีในชีวิตประจำวัน 2 เรื่อง คือ 192 จุดเริ่มต้นของความปลอดภัยด้านไอที และ 193 การเลือก Netbook หรือ Notebook เผยแพร่ใน thaiall.com/opinion/readonly.php ส่วนเรื่องที่ 194 กำหนดไว้แล้วในแผนที่ส่งตอนรายงานโครงการร่วมกับ nccit09 2) ปรับบทความ thaiall.com/wordpress พร้อมคัดลอกข้อมูลใน /blog ไปติดตั้งใน 127.0.0.1 ที่บ้าน เตรียมสอนช่วงต้นเดือนมิถุนายน52 3) แต่การอบรมจะใช้ template2 ที่ผมต้อง upgrade script ให้ทำงานกับ php รุ่นที่ผมใช้อยู่ และคาดว่าจะตั้งเป็นรุ่น 2.01 ก็ยังไม่ได้แจ้ง อ.ศรีเชาวน์ วิหคโต ผู้พัฒนา template2 ที่กศน.หลายแห่งใช้งาน เลยครับ เพราะคิดว่าพัฒนาแล้วจะติดตั้งใน thaiabc63.zip และแยกเผยแพร่เฉพาะ template21.zip อีกที  4) วันนี้หมดแรงข้าวเย็น คงพัฒนา template2.01 ต่อตอนนี้ไม่ได้แน่ สังขารไม่ให้ซะแล้วครับ ขอพักเท่านี้ พรุ่งนี้เย็นค่อยว่ากันใหม่ 8)