ฟอรั่มของบล็อก http://pssix.blogspot.com


มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

Share

l3adxl3oy
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 06/06/2011

มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by l3adxl3oy on 13/06/11, 06:46 pm

คือ ผมมี input box อยู่อันนึงซื่งโดยปกติแล้วมันจะต้องกดปุ่ม OK มันถึงจะรับค่าข้อมูลที่ใส่ลงไป
แต่ที่ผมต้องการคือ มันจะเป็นไปได้ไหมครับที่ ไม่ต้องกดปุ่ม OK หรือ ปุ่มอะไรก็ตาม ซึ่งผมอยากให้มันทำงานตลอด
เวลาอะคับ เช่น ผมใส่คำว่า "สวัสดี" ลงไปเมื่อผมพิมพ์จบปั๊ป มันก็จะขึ้น "สวัสดี" กลับมาเลยทันที เมื่อผมพิมเส็จอะคับโดยที่ผมไม่ได้กดปุ่มอะไรเลย ทั้ง Form มี Input Box ตัวเดียว ก็ประมาณนี้เเหละคับ ไม่ทราบว่าจะมีวิธีไหนบ้างคับ หรือถ้ามีวิธีอื่นก็ช่วยเเนะนำผมด้วยคับ ผมมือใหม่คับ อยากมีอาจารย์สอนเหมือนกาน Y_Y

newsak2005
ระงับสมาชิก
ระงับสมาชิก


จำนวนข้อความ : 115
ความนิยม : 0
เข้าร่วมเมื่อ : 08/05/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by newsak2005 on 13/06/11, 08:25 pm

l3adxl3oy พิมพ์ว่า:คือ ผมมี input box อยู่อันนึงซื่งโดยปกติแล้วมันจะต้องกดปุ่ม OK มันถึงจะรับค่าข้อมูลที่ใส่ลงไป
แต่ที่ผมต้องการคือ มันจะเป็นไปได้ไหมครับที่ ไม่ต้องกดปุ่ม OK หรือ ปุ่มอะไรก็ตาม ซึ่งผมอยากให้มันทำงานตลอด
เวลาอะคับ เช่น ผมใส่คำว่า "สวัสดี" ลงไปเมื่อผมพิมพ์จบปั๊ป มันก็จะขึ้น "สวัสดี" กลับมาเลยทันที เมื่อผมพิมเส็จอะคับโดยที่ผมไม่ได้กดปุ่มอะไรเลย ทั้ง Form มี Input Box ตัวเดียว ก็ประมาณนี้เเหละคับ ไม่ทราบว่าจะมีวิธีไหนบ้างคับ หรือถ้ามีวิธีอื่นก็ช่วยเเนะนำผมด้วยคับ ผมมือใหม่คับ อยากมีอาจารย์สอนเหมือนกาน Y_Y

ลองโค๊ดนี้ดูครับ (การทำโปรแกรม Auto Comment ไม่ใช่เรื่องยาก ถ้าศึกษาคำสั่งต่างๆที่นำมาใช้ให้ลึกซึ้ง)
Code:
#NoTrayIcon
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 195, 98, -1, -1)
$Input1 = GUICtrlCreateInput("", 48, 24, 129, 21)
$Label1 = GUICtrlCreateLabel("Input:", 16, 24, 31, 17)
$Label2 = GUICtrlCreateLabel("Output:", 16, 64, 39, 17, _
BitOR($ES_AUTOHSCROLL,$ES_READONLY))
$Input2 = GUICtrlCreateInput("", 56, 64, 121, 21)
GUISetState(@SW_SHOW)

Do
GUICtrlSetData($Input2, GUICtrlRead($Input1))
Sleep(10)
Until GUIGetMsg() = -3


แก้ไขล่าสุดโดย newsak2005 เมื่อ 14/06/11, 01:10 am, ทั้งหมด 3 ครั้ง

l3adxl3oy
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 06/06/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by l3adxl3oy on 13/06/11, 08:32 pm

อ่าครับขอบคุณมากคับ ถ้าไม่รังเกียจช่วยอธิบายการทำงานคร่าวๆสักหน่อยได้ไหมคับ

newsak2005
ระงับสมาชิก
ระงับสมาชิก


จำนวนข้อความ : 115
ความนิยม : 0
เข้าร่วมเมื่อ : 08/05/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by newsak2005 on 13/06/11, 08:48 pm

l3adxl3oy พิมพ์ว่า:อ่าครับขอบคุณมากคับ ถ้าไม่รังเกียจช่วยอธิบายการทำงานคร่าวๆสักหน่อยได้ไหมคับ

หลักการง่ายๆก็คือ Input2 ซึ่งเป็น output ถูกเขียนคำสั่งฝังไว้ใน Loop ซึ่งต้องทำงานซ้ำๆอยู่ตลอดเวลา

คำสั่งที่เขียนไว้ใน Loop ลักษณะนี้ Input2 จะรับค่ามาจาก Input1 ทุกครั้งที่พิมพ์ข้อความลงไปใน Input1 (งงไม๊?!?)

ถ้าจะป้อนข้อความเป็นประโยคๆ ลองประยุกต์ใช้คำสั่ง Control ดูครับ.


l3adxl3oy
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 06/06/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by l3adxl3oy on 13/06/11, 08:50 pm

คับผม ขอบคุณมากครับ ช่วยได้มากเลยคับ

l3adxl3oy
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 06/06/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by l3adxl3oy on 13/06/11, 10:17 pm

แล้วถ้าเราต้องการให้ input box มันกดปุ่ม OK เองจะต้องเขียนอย่างไรหรอคับ
คล้ายๆกับ timeout ของ MsgBox อะคับ โทดทีคำถามเยอะไปหน่อย ผมเพิ่งเริ่มจาก ศูนย์ T_T

newsak2005
ระงับสมาชิก
ระงับสมาชิก


จำนวนข้อความ : 115
ความนิยม : 0
เข้าร่วมเมื่อ : 08/05/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by newsak2005 on 13/06/11, 11:02 pm

l3adxl3oy พิมพ์ว่า:แล้วถ้าเราต้องการให้ input box มันกดปุ่ม OK เองจะต้องเขียนอย่างไรหรอคับ
คล้ายๆกับ timeout ของ MsgBox อะคับ โทดทีคำถามเยอะไปหน่อย ผมเพิ่งเริ่มจาก ศูนย์ T_T

มิได้เป็นการรบกวนแต่ประการใด ทุกคนใจดี

ถามกันมาเยอะๆ เพื่อนๆที่เข้ามาอ่านจะได้ความรู้ตามไปด้วย

ยังมีคนเก่งๆอีกหลายท่าน ที่ยังไม่ออกมา

(รอสักครู่เดี๋ยวเขียนโปรแกรมมาให้ลองทดสอบ)

ผมเข้าใจว่าท่านอยากให้เป็นแบบนี้ ใช่หรือไม่?

'เวลาพิมพ์ข้อความจบ และทิ้งช่วงห่างประมาณ 3 วิ ให้ comment ข้อความที่พิมพ์ไว้ทั้งหมดออกมา'


l3adxl3oy
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 06/06/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by l3adxl3oy on 13/06/11, 11:29 pm

ก็ไม่เชิงคับ ที่ผมต้องการก็ประมาณว่า มี inputbox ขึ้้นมาแล้วประมาณ 3 วิให้มันกด OK เองอัตโนมัติ
แล้วส่วน ข้อความที่จะใส่ใน inputbox นั้นผมก็จะไปใส่เงื่อนไขทีหลังอีกทีอะคับ เนื่องจากถ้าไม่กด OK ข้อความนั้นๆมันจะไม่ถูกเก็บค่าใน inputbox ผมเข้าใจถูกไหมคับ

newsak2005
ระงับสมาชิก
ระงับสมาชิก


จำนวนข้อความ : 115
ความนิยม : 0
เข้าร่วมเมื่อ : 08/05/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by newsak2005 on 13/06/11, 11:55 pm

l3adxl3oy พิมพ์ว่า:ก็ไม่เชิงคับ ที่ผมต้องการก็ประมาณว่า มี inputbox ขึ้้นมาแล้วประมาณ 3 วิให้มันกด OK เองอัตโนมัติ
แล้วส่วน ข้อความที่จะใส่ใน inputbox นั้นผมก็จะไปใส่เงื่อนไขทีหลังอีกทีอะคับ เนื่องจากถ้าไม่กด OK ข้อความนั้นๆมันจะไม่ถูกเก็บค่าใน inputbox ผมเข้าใจถูกไหมคับ

ลองกับโค๊ดนี้ดูก่อนก็แล้วกัน เดี๋ยวเขียนมาให้ทดลองอีกโปรแกรมนึง.

Code:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 195, 98, -1, -1)
$Input1 = GUICtrlCreateInput("", 48, 24, 129, 21)
$Label1 = GUICtrlCreateLabel("Input:", 16, 24, 31, 17)
$Label2 = GUICtrlCreateLabel("Output:", 16, 64, 39, 17, _
BitOR($ES_AUTOHSCROLL,$ES_READONLY))
$Input2 = GUICtrlCreateInput("", 56, 64, 121, 21)
GUISetState(@SW_SHOW)
AdlibRegister('_Timer', 10000) ;delay 10.sec
Do
Sleep(10)
Until GUIGetMsg() = -3

Func _Timer()
   GUICtrlSetData($Input2, GUICtrlRead($Input1)) ;auto comment very 10.sec
EndFunc
------------------------------------------------------------------------
Use GUICtrlSetState() Focus to button and send enter.

Code:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$title = 'Form1'
$Form1 = GUICreate($title, 200, 150, -1, -1)
WinSetOnTop($title, "", 1)
$Input1 = GUICtrlCreateInput("", 48, 24, 129, 21)
$Label1 = GUICtrlCreateLabel("Input:", 16, 24, 31, 17)
$Label2 = GUICtrlCreateLabel("Output:", 10, 64, 39, 17, _
BitOR($ES_AUTOHSCROLL,$ES_READONLY))
$Input2 = GUICtrlCreateInput("", 48, 64, 129, 21)
$Button1 = GUICtrlCreateButton("OK", 20, 105, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Clear", 105, 105, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
WinWaitActive($Form1, "", 1)
Send("T")
Sleep(500)
Send("h")
Sleep(500)
Send("e ")
Sleep(500)
Send("M")
Sleep(500)
Send("a")
Sleep(500)
Send("t")
Sleep(500)
Send("r")
Sleep(500)
Send("i")
Sleep(500)
Send("x ")
Sleep(500)
Send("b")
Sleep(500)
Send("y ")
Sleep(500)
Send("N")
Sleep(500)
Send("e")
Sleep(500)
Send("o")
GUICtrlSetState($Button1, $GUI_FOCUS)
Sleep(2000)
Send("{ENTER}")

Do
    $nMsg = GUIGetMsg()
    Switch $nMsg
      Case $Button1
         Sleep(2000)
         GUICtrlSetData($Input2, GUICtrlRead($Input1))
      Case $Button2
         GUICtrlSetData($Input1, '')
         GUICtrlSetData($Input2, GUICtrlRead($Input1))
   EndSwitch
Until $nMsg = $GUI_EVENT_CLOSE




แก้ไขล่าสุดโดย newsak2005 เมื่อ 14/06/11, 05:29 am, ทั้งหมด 2 ครั้ง

newsak2005
ระงับสมาชิก
ระงับสมาชิก


จำนวนข้อความ : 115
ความนิยม : 0
เข้าร่วมเมื่อ : 08/05/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by newsak2005 on 14/06/11, 12:07 am

Input มี 2 แบบ GUI Control Input กับ ActiveX Input ..ไม่รู้ว่าท่านต้องการใช้อันไหน?

l3adxl3oy
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 06/06/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by l3adxl3oy on 14/06/11, 12:12 am

คับผมขอลองดูก่อนนะคับ ถ้ายังไงก็ขอบคุณมากคับที่เสียเวลามา

l3adxl3oy
สมาชิกทั่วไป
สมาชิกทั่วไป


จำนวนข้อความ : 11
ความนิยม : 0
เข้าร่วมเมื่อ : 06/06/2011

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by l3adxl3oy on 14/06/11, 03:22 am

ได้แล้วคับผม รู้สึกว่าอันล่าสุดจะเข้าทางมากกว่าคับ ขอบคุณมากคับ ถ้าไงเดี๋ยวถามอีก ยังไม่อีกเยอะคับที่ผมไม่รู้ ขอฝากเนื้อฝากตัวด้วยเลยละกันครับ ^_^

POS
PSsix
PSsix


จำนวนข้อความ : 1151
ความนิยม : 323
เข้าร่วมเมื่อ : 19/07/2010

Re: มือใหม่หัดเขียน มีปัญหานิดหน่อยคับ

ตั้งหัวข้อ by POS on 14/06/11, 10:00 am

ผมอ่านดูเข้าใจคำถามแรก แต่คำถามที่ 2 ค่อนข้างคลุมเครือมาก สำหรับวิธีการในคำถามแรก เพิ่มคำสั่งเข้าไป 3 บรรทัด นำไปใช้กับ GUI แบบไหนก็ตาม(อ้างอิงจากการสร้าง GUI ในหนังสือ)

Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 304, 122, 192, 124)
$Button1 = GUICtrlCreateButton("Button1", 160, 24, 75, 25)
$Input1 = GUICtrlCreateInput("", 16, 24, 113, 21)
$Label1 = GUICtrlCreateLabel("", 16, 56, 105, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$text="";เพิ่ม

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
       Case $Button1
         MsgBox(0,GUICtrlRead ($Input1),GUICtrlRead ($Input1))

    EndSwitch
               if $text <> GUICtrlRead ($Input1) then GUICtrlSetData ($Label1, GUICtrlRead ($Input1)) ;เพิ่ม
$text= GUICtrlRead ($Input1) ;เพิ่ม
WEnd



||----------------------------------------------------------------------------------------------------------------||

กลุ่ม AutoIt ในเฟสบุ๊ค
[You must be registered and logged in to see this link.]

++++++++++++++++++++++++++++++++++++++++++++
pssix.blogspot.com

    เวลาขณะนี้ 17/01/17, 10:06 pm