tài liệu cung cấp kiến thứcthao tác cơ bản của ngôn ngữ lập trình delphi (tương tự như ngôn ngữ pascal), có thể tạo ứng dụng cho máy sử dụng hệ điều hành windows, hệ điều hành android (điện thoại cảm ứng android), hệ điều hành ios, cho cả 64 bit và 32 bit luôn. Delphi có màn hình lập trình trực quan như VB, rất rất giống với pascal nhưng được bổ sung thêm nhiều kiểu dữ liệu, nhiều đối tượng tương ứng với nhiều hệ điều hành.delphi tự động tạo khung chương trình, người lập trình chỉ tập trung viết chi tiết các lệnh ở phần thân chương trình.
Lời nói đầu Có bạn hỏi học Pascal làm không? Một chương trình Pascal chạy nhiều hệ điều hành không? Mình tạo ứng dụng điện thoại cảm ứng pascal không? Và … Thưa với bạn Pascal không để học cho mà giúp bạn có kiến thức để tạo ứng dụng thiết bị chạy hệ điều hành Windows, Android, IOS, OX S (Mac), thông qua ngôn ngữ lập trình Delphi (còn gọi ngôn ngữ lập trình Pascal hướng đối tượng) Tại không dùng kiến thức Pascal học để tạo ứng dụng cho điện thoại cảm ứng mình!!!!!!!!!! Cố lên nghe bạn… Chúng ta tìm hiểu Delphi XE8 phần TÀI LIỆU CƠ BẢN VỀ DELPHI XE8 Các nội dung khác viết tiếp, mong bạn ủng hộ góp ý chân thành địa mail: thaiquocvinh2009@gmail.com Mời bạn xem qua nội dung mục lục trang kế sau Chúc bạn thành công `\ /’…cố lên nhe… (.) BIÊN SOẠN LƯƠNG QUỐC VINH Mục lục tài liệu tham khảo Giới thiệu khái quát Delphi XE8 1.1 Màn hình làm việc 1.2 Thao tác bắt đầu tạo chương trình cho máy vi tính (PC, laptop có HĐH windows) điện thoại cảm ứng (iOS, android) cấu trúc chương trình 3.a kiểu liệu đơn giản 3.b kiểu liệu phức tạp phép toán dùng cho kiểu liệu đơn giản hàm-thủ tục dùng cho kiểu liệu đơn giản xuất-nhập liệu thông quan bàn phím, chuột, hình loại đối tượng thường dùng 7.1 giới thiệu thuộc tính phương thức loại 7.2 ví dụ áp dụng 7.2.1 áp dụng đơn lẻ kết hợp loại đối tượng 7.2.2 áp dụng kết hợp nhiều loại đối tượng Một số loại hiệu ứng 8.1 giới thiệu vài loại hiệu ứng thường dùng 8.2 áp dụng hiệu ứng Tạo đối tượng chương trình chạy (tạo đối tượng câu lệnh) 10 Làm việc với máy in TÀI LIỆU THAM KHẢO Giáo trình lí thuyết tập Borland Delphi-NXB GD 2000 Help offline Delphi XE8 (chủ yếu tài liệu này) Sưu tầm từ internet Giáo trình lí thuyết tập ĐHCT GIỚI THIỆU KHÁI QUÁT DELPHI XE8 1.1 Màn hình làm việc 1.1.1 Màn hình làm việc không trực tuyến: H1 1.1.2 Màn hình làm việc trực tuyến: Chỉ khác với hình làm việc không trực tuyến phần có nội dung tệp làm việc gần đây, … H2 1.2 Thao tác bắt đầu tạo chương trình cho máy vi tính (PC, laptop có HĐH windows) điện thoại cảm ứng (iOS, android, OS X) B1 Nháy chuột trái vào file -> new -> Multi-Device Application-Delphi H3 B2 Nháy chuột vào Blank Application -> ok H4 Sau có kết tương tự sau: H5 Màn hình làm việc với ứng dụng * với bước làm ta bắt đầu tạo ứng dụng cho win * tạo ứng dụng cho ios làm tương tự với android * muốn tạo ứng dụng cho android làm thêm thao tác sau: B3 Trên điện thoại ta làm thao tác: - gắn dây cáp usb máy tính điện thoại - kết nối usb chọn loại MTP - vào cài đặt -> thông tin thiết bị (máy điện thoại) -> chọn nhiều lần liên tiếp vào ‘số hiệu tạo’, máy tiếng anh xem hàng dưới: (settings -> about device -> build number, nháy liên tục nhiều lần vào build number, chữ khác tùy vào nhà sản xuất) - trở cài đặt -> cài đặt cho người phát triển -> bật ‘on’ cho cài đặt cho người phát triển -> đánh dấu chọn cho chế độ usb debug, máy tiếng anh xem hàng dưới: (trở settings -> developer options -> developer options chọn ‘on’ -> đánh dấu vào usb debugging) B4 Trên máy tính windows phải cài đặt driver chương trình hỗ trợ phù hợp tùy theo điện thoại hảng Vd: MoboMarket For Android, MoboRobo, samsung kies, (bản thân chương trình có hướng dẫn kết nối đtdđ với máy tính) Tải moboMarket http://taimienphi.vn/download-mobomarket-19511 Các tính Moborobo: (theo http://taimienphi.vn/downloadmoborobo-16068) - Kết nối máy tính với điện thoại, máy tính bảng - Quản lý liệu Android, iPhone, iPad - Chuyển danh bạ thiết bị - Tải tiện ích, nhạc, ảnh, video điện thoại - Gửi tin nhắn từ máy tính - Sao lưu phục hồi liệu B5 Mở delphi chọn android theo hình dưới: B6 Nếu kết nối thành công xuất tên điện thoại danh sách (hai máy avd có dấu x đỏ nghĩa không kết nối được, sm-j100h kết nối tốt) Mời bạn xem hình kết nối thành công Chúc bạn kết nối thành công, cố gắn lên mà………… Lưu ý: -Tốc độ chạy chương trình phụ thuộc vào loại máy tính loại ĐTDĐ -Nếu kết nối chưa thành công ta làm lại b3 vài lần nháy chuột vào Kết nối moboMarket for android, điện thoại phải cài thêm mobomarket cho android, hình minh họa sau kết nối với điện thoại: Kết nối samsung kies3 1.3 Màn hình làm việc với ứng dụng có nội dung: - Thanh tiêu đề (title) - Thanh bảng chọn (menu) - Các công cụ (toolbar) Một số công cụ quan trọng: nháy chuột vào view -> toolbars –> đánh dấu vào tên: component, standard, debug, platform device selection Thanh component: chứa đối tượng có sẵn delphi Lưu ý: ô search cho phép gõ tên đối tượng mà ta cần sử dụng, xuất liền ví dụ: cần tìm button (không cần gõ đủ chữ button) Thanh standard: chứa nút lệnh tạo tệp mới, mở tệp cũ, lưu tệp, lưu tất tệp… Thanh debug Chứa nút lệnh: chạy chương trình (hai nút đầu), tạm dừng, dừng chương trình Thanh platform device selection: Chứa hai nút lệnh: thứ chọn loại hệ điều hành cho ứng dụng, thứ hai chọn thiết bị kết nối thành công với delphi - Cấu trúc biểu mẫu (form) Chế độ thiết kế Chế độ viết lệnh -Cho biết đối tượng có form -cho biết: thông báo lỗi, lớp, biến, hằng, thư viện khai -muốn nhanh đến đối tượng báo ta nháy đôi vào tên đối tượng -muốn nhanh đến nội dung ta nháy đôi vào tên nội dung - Danh sách thuộc tính (properties), kiện (events) đối tượng thuộc tính kiện (events) 10 phương thức TStringHelper (phần tóm tắt) System.SysUtils.TStringHelper Compare public Compares two 0-based strings for equality CompareOrdinal compares two strings by evaluating the numeric values CompareOrdinal public of the corresponding characters in each string CompareText public Compares two strings by their ordinal value, without case sensitivity CompareTo public Compares this 0-based string against a given string Contains public Returns whether this 0-based string contains the given string Copy public Copies and returns the 0-based given string Copies memory allocated for several characters in the 0-based string to CopyTo public the memory allocated for characters in another 0-based string CountChar public CountChar counts the occurrences of the C character in the string Create public DeQuotedString public This method removes the quote characters from a string Returns whether the given 0-based string ends with the given 0-based EndsText public substring EndsWith public Returns whether this 0-based string ends with the given substring Equals public Returns whether the two given 0-based strings are identical Format public Identical to Format function GetHashCode public Returns the hash code for this string Returns an integer that specifies the position of the first occurrence of a character or a substring within this 0-based string, starting the search at IndexOf public StartIndex This method returns -1 if the value is not found or StartIndex specifies an invalid value Returns an integer indicating the position of the first given character IndexOfAny public found in the 0-based string IndexOfAnyUnquoted public Insert public Inserts a string in this 0-based string at the given position Indicates whether a specified character in this 0-based string matches one IsDelimiter public of a set of delimiters Returns whether this 0-based string is empty (does not contain any IsEmpty public characters) 61 Is a static class function that returns whether the given string is empty or not (does not contain any characters) Indicates if a specified string is empty or consists only of white-space IsNullOrWhiteSpace public characters Joins two or more 0-based strings together separated by the given Join public Separator Returns the string index in this 0-based string of the rightmost whole LastDelimiter public character that matches any character in Delims (except null = #0) LastIndexOf public Returns the last index of the Value string in the current 0-based string Returns the last index of any character of the AnyOf character array, in LastIndexOfAny public the current 0-based string LowerCase public Converts an ASCII string to lowercase PadLeft public Left-aligns a 0-based string into a fixed length text space PadRight public Right aligns this 0-based string into a fixed length text space Parse converts Integer, Boolean and Extended types to their string Parse public representations QuotedString doubles all the occurrences of a character and also adds it QuotedString public to the edges of the string Removes the substring at the position StartIndex and optionally until Remove public the position StartIndex + Count, if specified, from this 0-based string Replace public Replaces an old character or string with a new given character or string Split public Splits this 0-based string into substrings, using the given Separator StartsWith public Returns whether this 0-based string starts with the given string Returns the substring starting at the position StartIndex and optionally Substring public ending at the position StartIndex + Length, if specified, from this 0based string ToBoolean public Converts a string to a Boolean value Transforms this 0-based string into a TArray (a character array) ToCharArray public and returns it ToDouble public Converts a given string to a floating-point value ToExtended public Converts a given string to a floating-point value ToInt64 public Converts a string that represents an integer (decimal or hex notation) into ToInteger public a number Transforms this 0-based string into an all lowercase characters 0-based ToLower public string and returns it Transforms this 0-based string into an all-lowercase characters 0-based ToLowerInvariant public string and returns it The conversion is done using the UTF-16 character representation, according to Unicode specification ToSingle public Converts a given string to a floating-point value Transforms this 0-based string into an all-uppercase characters 0-based ToUpper public string and returns it Transforms this zero-based string into an all-uppercase characters zerobased string and returns it The conversion is done using the UTF-16 ToUpperInvariant public character represe ntation, according to the Unicode specification Trims leading and trailing spaces and control characters from this 0Trim public based string TrimEnd (deprecated) public Trims the given trailing characters from this 0-based string TrimLeft public Trims the given leading characters from this 0-based string TrimRight public Trims the given trailing characters from a 0-based string 62 IsNullOrEmpty public TrimStart (deprecated) public Trims the given leading characters from this 0-based string UpperCase public Converts an ASCII string to uppercase Các thuộc tính TstringHelper System.SysUtils.TStringHelper Properties Accesses individual characters in this zero-based string The Chars property is read-only Length Public Use Length in order to obtain the length of the zero-based string Chars public Phần chi tiết hàm TStringHelper Hàm compare: Cú pháp: String.Compare(const StrA: string; const StrB: string): Integer; overload; static; inline; (hàm có phân biệt hoa thường nghe bạn) String.Compare(const StrA: string; const StrB: string; IgnoreCase: Boolean): Integer; overload; static; inline; Hoạt động hàm compare: -so sánh hai xâu strA strB -kết là: 0 strA lớn (ở sau) strB -Tham số IgnoreCase nhận hai giá trị true/false, có ý nghĩa phân biệt chữ hoa hay không Tham số bỏ Ví dụ: Yêu cầu so sánh xâu hai trường hợp có/không phân biệt chữ hoa Có phân biệt chữ hoa thường: procedure TForm1.FormCreate(Sender: TObject); var s1,s2:string; begin //hai xâu có độ dài (đều chữ thường): s1:='các bạn'; s2:='các bạn'; showmessage(inttostr(string.compare(s1,s2))); end; 63 procedure TForm1.FormCreate(Sender: TObject); var s1,s2:string; begin //hai xâu có độ dài (có chữ hoa Á): s1:='các bạn'; s2:='cÁc bạn'; showmessage(inttostr(string.compare(s1,s2))); end; //hai xâu có độ dài (có chữ hoa Á s2; s1 đổi thành ccá): s1:='ccá bạn'; s2:='cÁc bạn'; -//hai xâu có độ dài khác (có chữ hoa Á s2; s1 đổi thành ccá): 64 s1:='ccá bạn'; s2:='cÁc bạn, khỏe '; -Có thêm tham số thứ ba: Nếu true không phân biệt chữ hoa/thường //hai xâu có độ dài nhau: s1:='các bạn'; s2:='cÁc bạn'; showmessage(inttostr(string.compare(s1,s2,true))); -//hai xâu có độ dài khác (có chữ hoa Á s2): s1:='các bạn'; s2:='cÁc bạn, khỏe '; showmessage(inttostr(string.compare(s1,s2,true))); 65 Hàm CompareTo Cú pháp: TênBiếnXâu.CompareTo(const strB: string): Integer; Hoạt động: Có phân biệt chữ hoa/thường So sánh xâu với xâu strB Kết trả về: =0 hai xâu giống 0 xâu sau xâu strB Ví dụ: procedure TForm1.FormCreate(Sender: TObject); var s1,s2:string; begin //hàm compareto phân biệt chữ hoa/thường s1:='chào bạn'; s2:='chào bạn'; showmessage( inttostr(s1.CompareTo(s2)) ); end; 66 -procedure TForm1.FormCreate(Sender: TObject); var s1,s2:string; begin //hàm compareto phân biệt chữ hoa/thường s1:='chào bạn'; s2:='cHào bạn'; //chữ chào thành cHào showmessage( inttostr(s1.CompareTo(s2)) ); end; -procedure TForm1.FormCreate(Sender: TObject); var s1,s2:string; begin //hàm compareto phân biệt chữ hoa/thường 67 s1:='chÀo bạn'; //đổi chữ chào thành chÀo s2:='chào bạn'; showmessage( inttostr(s1.CompareTo(s2)) ); end; -procedure TForm1.FormCreate(Sender: TObject); var s1,s2:string; begin //hàm compareto phân biệt chữ hoa/thường s1:='chào bạn'; s2:='choà bạn'; //đổi chữ chào thành choà showmessage( inttostr(s1.CompareTo(s2)) ); end; 68 Hàm Copy Cú pháp String.Copy(const Str: string): string; Hoạt động Sao chép trả lại nguyên xâu Ví dụ: procedure TForm1.FormCreate(Sender: TObject); var s:string; begin s:='kiểu liệu TStringHelper'; showmessage( 'đây xâu chép lại: '+string.Copy(s)); end; Hàm CountChar Cú pháp TênBiếnXâu.CountChar(const C: Char): Integer; Hoạt động Đếm số lượng kí tự chứa nội dung biến C có xâu Ví dụ procedure TForm1.FormCreate(Sender: TObject); var s:string; begin s:='chào bạn, ví dụ hàm CountChar.'; showmessage( 'số lượng kí tự ''à'' là: '+inttostr(s.CountChar('à'))); 69 end; Hàm IndexOf Cú pháp TênBiếnXâu.IndexOf(const st: string): Integer; TênBiếnXâu.IndexOf(const st: string; StartIndex: Integer): Integer; TênBiếnXâu.IndexOf(const st: string; StartIndex: Integer; Count: Integer): Integer; Hoạt động Tìm vị trí xâu st xâu này, với vị trí bắt đầu (nếu có) startIndex, phạm vi kí tự (nếu có) count Trả -1 tìm không thấy giá trị bắt đầu StartIndex không hợp lệ Ví dụ: -Bạn tạo ứng dụng mới, nháy đôi vào form, gõ lệnh sau vào thủ tục formCreate, nhấn phím F9 để xem kết -Nội dung lệnh: procedure TForm1.FormCreate(Sender: TObject); var s:string; begin s:='chào bạn.'; //kí tự có vị trí //ví dụ cho cú pháp số //lưu ý có phân biệt dấu tiếng Việt: showmessage('vị trí ''a'' là: '+inttostr(s.IndexOf('a' ) )); showmessage('vị trí ''á'' là: '+inttostr(s.IndexOf('á' ) )); //ví dụ cho cú pháp số showmessage('vị trí ''c'' là: '+inttostr(s.IndexOf('c' ) )); showmessage('vị trí ''c'', bắt đầu tìm từ vị trí (từ chữ o) là: '+inttostr(s.IndexOf('c', ) )); //ví dụ cho cú pháp số showmessage('vị trí ''c'', bắt đầu tìm từ vị trí (từ chữ o), phạm vi tìm kí tự, là: '+inttostr(s.IndexOf('c', 3,2 ) )); 70 showmessage('vị trí ''c'', bắt đầu tìm từ vị trí (từ chữ o), phạm vi tìm kí tự, là: '+inttostr(s.IndexOf('c', 3,4 ) )); end; kết quả: 71 Hàm Insert Cú pháp TênBiếnXâu.Insert(StartIndex: Integer; const Value: string): string; Hoạt động Chèn thêm xâu value vào xâu TênBiênXâu từ vị trí startindex Ví dụ IsEmpty IsNullOrEmpty Join Parse Remove Replace Substring Trim • • • Help Feedback Copyright (C) 2015 Embarcadero Technologies, Inc All Rights Reserved Current Wiki Page Show: Delphi Display Preferences C++ System.SysUtils.TStringHelper Fields From RAD Studio API Documentation • Up to Parent: TStringHelper Inherited Protected Empty public Empty: string = ; 72 • • • Help Feedback Copyright (C) 2015 Embarcadero Technologies, Inc All Rights Reserved Current Wiki Page Delphi RTL Function (1-based) TStringHelper Function (0-based)* System.Pos System.Delete System.Copy System.SysUtils.Trim TStringHelper.IndexOf TStringHelper.Remove TStringHelper.Substring TStringHelper.Trim Chars is a useful property of TStringHelper: Chars[Index] Example of using the Chars property to access individual characters: function Trim(const S: string): string; var I, L: Integer; begin L := S.Length - 1; I := 0; if (L > -1) and (S.Chars[I] > ' ') and (S.Chars[L] > ' ') then Exit(S); while (I ' ') and (S[L] > ' ') then Exit(S); while (I [...]... 30 Vd: ta cần thông báo với nội dung: ‘làm quen với delphi xe8 Thiết kế: Thuộc tính name của lable ta đặt là lblTB Thuộc tính text của lable ta xóa trống (không có kí tự nào cả) Viết lệnh: Ta nháy đôi vào form Viết các lệnh cho thủ thục TForm1.FormCreate như sau: procedure TForm1.FormCreate(Sender: TObject); begin lblTB.Text := 'làm quen với delphi xe8' ; end; 31 chạy chương trình: ta ấn phím F9 Kết... lệnh btnTinhTuoi và gõ các lệnh vào Các bạn có thể tham khảo các lệnh sau: procedure TForm1.btnTinhTuoiClick(Sender: TObject); var namsinh,namhientai,tuoi:integer; begin NamSinh:=strToInt(edtnamsinh.Text); NamHienTai:=strToInt(edtnamhientai.Text); tuoi:=namhientai-namsinh; showmessage('số tuổi của bạn là:'+intToStr(tuoi)); end; dưới đây là chi tiết của chương trình: 33 Chạy chương trình ta nhấn phím F9... khóa của delphi (người lập trình không thể thay đổi) Cặp dấu có ý nghĩa là phần bên trong bắt buộc phải có Cặp dấu [] có ý nghĩa là phần bên trong không bắt buộc có Điều kiện là một biểu thức có kết quả là true/false (đúng/sai) Câu lệnh, câu lệnh 1, câu lệnh 2 là một lệnh/hàm/thủ tục nào đó của delphi Hoạt động: Diễn tả bằng lời văn: Dạng thiếu: khi cho kết quả là true (đúng) thì delphi. .. khi cho kết quả là true (đúng) thì delphi sẽ thực hiện câu lệnh Khi cho kết quả là false (sai) thì delphi sẽ bỏ qua câu lệnh Dạng đủ: khi cho kết quả là true (đúng) thì delphi chỉ thực hiện câu lệnh1 Khi cho kết quả là false (sai) thì delphi chỉ thực hiện câu lệnh 2 Diễn tả bằng sơ đồ khối: DẠNG THIẾU DẠNG ĐỦ Cách xuất dữ liệu từ chương trình ra màn hình... màu đen thay đổi tùy theo nhu cầu 14 Trong khung trên: Tên-thư-viện-1, tên-thư-viện-2,… là tên của các thư viện có sẵn trong delphi hoặc của người viết chương trình đã tạo, tên mỗi thư viện có thể xuống hàng để dễ nhìn Type Khai báo các kiểu do người dùng định nghĩa hoặc do delphi tự sinh ra (vd:Tform1), có phạm vi sử dụng (mặc định/ngầm hiểu) là cả dự án, nghĩa là các unit khác vẫn dùng được nó đó... thay đổi, phần màu đen thay đổi tùy theo nhu cầu - Trong khung trên: Tên-kiểu-dữ-liệu là do người viết chương trình tự đặt theo đúng qui định đặt tên của delphi (xem qui tắc đặt tên ở phần 2.3 bên dưới) Kiểu-dữ-liệu là một trong những kiểu dữ liệu của delphi, hoặc của người dùng đã định nghĩa Ví dụ: Yêu cầu: ta cần định nghĩa một kiểu dữ liệu có tên là Tnguyen để chứa các số nguyên trong phạm vi 0 đến... lệnh Name: là tên của form, được dùng trong lập trình Vd: Yêu cầu: ta muốn, khi chương trình đã làm xong một số việc, khi đó cửa sổ form có tên là fVinh sẽ to hết màn hình Phân tích: thì ta gán giá trị true cho thuộc tính fullscreen của form, Viết lệnh là: fVinh.fullscreen := true ; Height: chiều cao (chiều dài) của form, đơn vị là pixel Width: Chiều rộng (bề ngang) của form, đơn vị là pixel 19 2.5.1.2... System.UITypes.tmsgdlgbtn.mbNo cùng thuộc thư viện System.UITypes.TMsgDlgType nên ta có thể viết gọn lại như sau: TMsgDlgType.mtWarning, TMsgDlgType.mbNo nếu chỉ viết mbYes, mnNo, mtWarning giống như trong help offline của delphi thì delphi báo lỗi - Ta có thể thay đổi giá trị khác cho TMsgDlgType.mtWarning thành TMsgDlgType.mtInformation để xem sự khác nhau - 0,tmsgdlgbtn.mbNo) tham số cuối tmsgdlgbtn.mbno có ý nghĩa là lựa... Label (nhãn): -Dùng để thể hiện chữ trên form -Cách gắn label vào form: B1.Tìm đối tượng ở thanh tool paletes B2.Nháy đôi vào Tlabel là xong 2.5.2.1 Label-properties: Name: Tên của đối tượng label, được delphi đặt sẵn là Label_số Ta nên đổi tên mới theo dạng: lblTênMới Trong đó: Với ‘tên mới’ là tên do người lập trình đặt, mang ý nghĩ là mục đích mà ta muốn label làm; còn ‘lnl’ là viết tắt của từ label... là procedure TForm1.edtHoTenChange(Sender: TObject); và các lệnh bên trong chương trình nhỏ sẽ được thực hiện theo ShowMessage(chuỗi);_quan trọng lắm là thủ tục (còn gọi là chương trình nhỏ/lệnh) của delphi, có chức năng làm xuất hiện cửa sổ nhỏ với nội dung là chuỗi mà ta gõ trong cặp dấu ngoặc tròn Lệnh này thường dùng để thông báo một câu ngắn nào đó, hoặc thể hiện kết quả trung gian (chẳng hạn ... hướng dẫn kết nối đtdđ với máy tính) Tải moboMarket http://taimienphi.vn/download-mobomarket-19511 Các tính Moborobo: (theo http://taimienphi.vn/downloadmoborobo-16068) - Kết nối máy tính với