[GUI & Code] Phần 6: Viết ứng dụng có chức năng random như xRandom v1.0


Giới thiệu
Đây là bài hướng dẫn có rất nhiều trên internet. Đặc biệt là bài của Mạnh Tuấn (Juno_okyo) nhưng dường như anh ấy đã xóa. Nên bây giờ mình xin hướng dẫn lại các bạn cách tạo một công cụ random số :)) Random chữ cũng tựa tựa như random số :)) Tìm hiểu tí về bảng mã gì mình quên rồi :p tìm chút trong file help F1 là ra ngay.

Bạn có thể sử dụng hàng mẫu ở bài này: xRandom v1.0 - Công cụ tạo số ngẫu nhiên
Hoặc ở đây: https://www.random.org/

Hướng dẫn
Đầu tiên ta phải có một GUI: 3 Label, 3 input và 1 button (tùy, nhưng phải lớn hơn hoặc bằng 1, mình làm 1 button thôi cho dễ).
  • 3 Label, đặt theo thứ tự (xuống hàng): Min (số bé nhất), Max (số lớn nhất), Result (kết quả)
  • 3 Input, đặt ngang với các Label, muốn đẹp thì set cho text nằm ở giữa. Input Result set Readonly :)) Cho 3 cái thêm style $ES_Number lại cho đỡ phần If :))
  • 1 Button.

Sau một hồi mò với Koda mình đã tạo được một cái GUI

Sau khi đã tạo xong GUI, có một cái hàm chính, ta chỉ cần gắn hàm này vào là xong
Random ( [Min = 0 [, Max = 1 [, Flag = 0]]] )
Bắt tay vào code nào. Ta case biến trong vòng lặp như mấy bài trước.
Case $Button1
 Randomx()

Tạo một func set cho Randomx().

Trong phần Func này ta phải 2 biến đọc dữ liệu từ 2 input Min và Max (vì code là $input1, ... nên mình không chỉnh sửa gì hết
$rMin = GUICtrlRead($Input1) ;~ Đọc dữ liệu input Min
$rMax = GUICtrlRead($Input2) ;~ Đọc dữ liệu input Max

Phần tiếp theo, ở đây bạn có thể đặt biến vào để random được rồi nhưng nếu muốn chuyên nghiệp thì cần một số lệnh kiểm tra dữ liệu từ các input đưa vào.
  • Nếu 1 trong 2 Input để trống thì hiện msgbox báo lỗi (16)
  • Nếu số trong Input Min lớn hơn Input Max thì báo lỗi (16)
Ta code như này, sử dụng hàm If...EndIf
If $rMin = "" Or $rMax = "" Then
 MsgBox(16, "Error", "Một trong hai không được để trống")
ElseIf $rMin > $rMax Then
 MsgBox(16, "Error", "Min không được lớn hơn Max")

Phần random ta sẽ code như này, sau khi random thì ta cần set dữ liệu vào ô Input của Result :)) Nên vì thế ta phải đặt biến cho hàm Random hoặc khỏi đặt, làm gọn luôn (mình sẽ code 2 cách)
Cách 1
$random = Random($rMin, $rMax, 1)
GUICtrlSetData($Input3, $random)

Cách 2
GUICtrlSetData($Input3, Random($rMin, $rMax, 1))

  • Random là hàm Random số
  • $rMin là số nhỏ nhất
  • $rMax là số lớn nhất
  • 1 là flaq, thêm nó vào nó sẽ chỉ Random số nguyên thôi
  • GUICtrlSetData là hàm set dữ liệu lên Control
  • $Input3 là input của Result
Thế là xong :)) Ghép code lại, chỉnh sửa hàm, thêm chữ vào

Có một điều thú vị: Tại sao phần If  không có kiểm tra loại dữ liệu, kiểm tra xem nó có phải là số hay không, lỡ chữ thì sao?

Xin thưa! Phần kiểm tra xem nó có là chữ hay không thì không cần lo nữa vì đã có $ES_Number ở trên kia mình bảo thêm vào 3 Input rồi đấy :)) Không tin cứ nhập thử đi, không phải số nó không cho nhập đâu :))

Mã nguồn
http://menly.ml/view/2e0d2dd1

Share this

Related Posts

Previous
Next Post »