מבוא לדלפי ותכנות בסביבה ויזואלית



הקדמה
-----
שפת הפסקל הומצאה עוד בתחילת שנות השבעים, היא באה לשימוש ותפוצה רחבה בעולם ובאה לשימושים שונים,
בין השאר היא נכנסה למערכת החינוך של הארץ בטח באחד השלבים האלה בהיותה שפה קלה ללמידה ושפה שמיישמת
את עקרונות התכנות המובנה בצורה שעוזרת להטביע את הערכים האלו במתכנת החדש.כמו שכולכם יודעים החברה שלקחה
צד חזק מאוד בתחום השיווקי של השפה היא החברה borland
(לידע כללי בורלד החלה לשווק ולהמשיך לפתח את טורבו פסקל בשנת 1983)

בשנות ה90 החלה לתפוס תאוצה שפת הVB, בזכות הפשטות שלה ביצירת תוכנות למערכת ההפעלה וינדוס, כשראו את זה בבורלנד
החליטו לרשת את רוב המרכיבים הויזואלים שלה להשאיר את הסינקטס של פסקל ובכך לתת לפסקל הזדמנות
אולי לצעוד אל המאה העשרים, סה"כ הייתה זו החלטה מאוד חכמה הרבה אנשים יודעים פסקל ודבר זה היה אמור לחסוך להם ללמוד VB
ובכלל פסקל rulez:)

בקיצור פה נוצרה שפת הדלפי (ב פברואר 1995) חיפשתי הרבה זמן גם מבחינה הגיונית וגם היסטורית למה לא
קראו לזה ויזואל פסקל או משהו כזה, לא מצאתי עדות היסטורית( מי שמוצא מוזמן לעדכן אותי) אבל אני מניח שהם רצו
להתנער מהשם ה"ישן" של פסקל וגם לא רצו להדמות לויסואל בייסיק או ויסואל סיפיפי
(אתם יודעים מה קורה למי שמעתיק אותיות מהשמות של מיקרוסופט:X)

בימים האלו הרבה אנשים לא מחשיבים את פסקל כשפה מתקדמת ורבים חושבים שהיא רק טובה ליצירת תוכנות בדוס,
כמובן שהכתבה הזאת תוכיח להם את טעותם, דלפי לדעתי היא אחת השפות הויזואליות הטובות והקלות ביותר,
בזכות הסינטקט הקל שלה מאוד כיפית לעבודה, פסקל בעצמה מאפשרת את רוב הדברים שאפשר לעשות בסי לדוגמא מכול הבחינות,
כמובן שלסי יש את הייתרונות שלה אבל למתחילים הייתרונות האלה לא בדיוק יהיו ברורים ולכן דווקא לי אישית היה מאוד
קל ללמוד תכנות ויזואלי מונחה ארועים ואובייקטים בצורה הזאת כאשר יש לי "גיבוי" של שפה שאני שולט בה לגמרי,
אם ללמוד אותה או לא אני לא יכול להגיד לכם כול אחד בגישה שלו, לדעתי לדעת עוד ועוד שפות זה טוב וחשוב,
כיום השפות קצת מתקרבות אחת לשניה אבל עדיין לכול שפה יש את המאפיינים המיוחדים שלה , וידיעה של הרבה שפות
יכול לעזור לך המתכנת לדעת באיזה שפה לבחור לאיזו מטרה, אז אם בא לכם תמשיכו לקרוא, את הכתבה הזאת אני כותב
לבקשת הקהל מה שנקרא, אני מקווה שתאהבו אותה, ניסיתי להכניס פה כמה שיותר דברים אולי בצורה בסיסית כדי לעזור
לכם לבצע את המעבר מפסקל לדלפי בקלות אם יש לכם הצעות או בקשות בנוגע להמשך של הכתבה אתם מוזמנים לכתוב אותם.

סהכ דלפי ופרוייקטים אחרים של בורלנד משתלבים יפה מאוד עם אווירת הקוד הפתוח , למשל בדלפי אפשר אחרי הנחיות מסויימות
(שמצויות כמעט בכול מקום בקבצי העזרה שלהם אני חייב לציין) לגרום לכך שהתוכנה שלך תעבוד גם בלינוקס, גם בכלל הם
מפתחים כול מיני פלטפורמות ללינוקס (Kylix לדוגמא)


לצורך המדריך הזה אני ממליץ לכם להשתמש ב delphi7 ולא ב 8 החדש יותר, דבר ראשון בגלל שאפשר להוריד אותו חינם מהנט
(לנסיון), וגם בגלל עוד כמה סיבות שבעיקר באות להקל עליכם
(המבוא יצא גם ככה יותר מידי ארוך אז אני חוסך לכם - ראו לינקים ודברים אחרים בסוף)

לידע כללי תדעו שדלפי 8 משתמש בפלטפורמה של ה דוטנט, בכול הנוגע לקבצי ספריה וכו, לצד זה יש כמה ייתרונות,
גם נעשו כמה שינויים בIDE שדומים ל VS.NET , אבל דלפי נשאר אותו דלפי, ואפשר(אחרי כמה שינויים) להתאים כול
תוכנית שנבנתה ב דלפי 7 ל8, וגם אפשר לפתח בלי השימוש בפלטפורמת ה דוטנט.

בסיס - עבודה בסביבה ויזואלית
----------------------------
טוב, במדריך זה אני יוצא מנקודת הנחה שאתם יודעים פסקל, או לפחות את הבסיס של פסקל,
אבל חסר לכם קצת ידע בעבודה בסביבה ויזואלית(אתם לא יודעים ויסואל בייסיק או לא יודעים מספיק),
אם אין לכם ידע בפסקל אז לא חסר איפה לרכוש אותו, אם כה יש לכם ידע בויסואל בייסיק אז אתם יכולים
לדלג על הקטע הזה..אבל שווה לכם להציץ בקטע על הפקדים שתדעו מה קורה קצת.

בכול תוכנית שתפתחו בדלפי יש 2 מרכיבים - התוכנית הראשית, זאת שמריצה את הפורמים ועושה את כול ההכנות לפניהם ,
והחלק השני הפורמים שלכם שהם למעשה מרכז העבודה (בהתחלה) כול פורם למעשה מנוהל ע"י יוניט,
שמחזיקה את המרכיבים שלו ושל כול האובייקטים והפקדים עליו.

כמובן שבסוף כול זה יכנס ל קובץ אחד EXE .

שתפעילו את הקובץ יעשו כול הדברים שנאמרים בתוכנית הראשית, בדרך כלל זה יכלול לפתוח את אחד או יותר הפורמים,
להבדיל מסתם פתיחה יש לטעון את הפורם לזכרון ופורם שלא נטען אי אפשר להראות אותו..לכן שימו לב לדוגמא שאם
אומרים לפורם אחד להראות פורם אחר בפתיחה שלו והוא לא נטען עדיין זה יצור ארור

עוד הערה, הפורם שאמרתם לו להטען ראשון יראה כפורום הראשון וישמש למעשה כפורם הראשי, כול מה שיטען אחריו לא יראה עד שתקראו לו

בניגוד לתוכניות של קונסול (מה שפיתחתם בפסקל) אנחנו לא מפתחים את התוכנית עצמה, אלא את היוניטים שלה,
אין לנו אפשרות פשוט להריץ את הקובץ הוא יעשה מה שהוא צריך ויסיים, התוכנית מופעלת ע"י ארועים ורק הם מתבצעים,
(אם אתם רוצים לכתוב תוכנית לקונסול זה אפשרי חפשו file>new>other>console application )

התוכנית הראשית נראית בהתחלה ככה:
program Project1;{שם הפרוייקט}

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};{כמו שאמרתי מה שאנחנו מפתחים הוא למעשה היוניט של הפורם}

{$R *.res}{פקודה לקומפיילר ליצור קובץ ראס}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);{טוען את הפורם שנקרא פורם 1 מתוך היוניט שטענו}
Application.Run;{מריץ את התוכנית ומראה לנו את הפורם הראשון שנטען}
end.


מה זה ארועים? למה התכוונתי שהוא פותח פורם אחר בטעינה? כול זאת בהמשך.


אובייקטים וארועים
-----------------
כפי שאמרתי דלפי (לפחות מנסה) להיות שפה מונחת עצמים, חלק מהעצמים האלה הם הפקדים, יש פקדים שונים לצרכים שונים,
את הפקדים אפשר למצוא בלשוניות למעלה תחת סוגים שונים, את הפקדים הבסיסיים אפשר למצוא
בלשוניות standart (כמה צפוי) וגם ב additional

פקד-אובייקט שניתן להשימו על טופס ומשמש לצורך מסויים(לא כול אובייקט יכול להיות פקד אבל כול פקד הוא אובייקט)

בגדול כול אובייקט הוא למעשה כמו רשומה, המכילה פרטים שונים לדוגמא לאובייקט form(כה כה גם הפורם הוא אובייקט)
מחזיק ערכים בנוגע למקום שלו השם שלו ועוד,
(בצד אפשר לערוך את הדברים האלה, שדות Name וכו...)

כמו שאמרתי תוכנית ויסואלית מונחת ע"י ארועים, לדוגמא כאשר אנו טוענים את הפורם (זוכרים בתוכנית הראשית)
יתבצע מה שכתוב לביצוע בפרוצדורה שמהווה את הארוע הזה, כמובן שאם לא קיימת פרוצדורה כזאת אז לא מתבצע כלום.
(ארוע זה נקרא onload)

לכול פקד יש ארועים שונים, את הארועים של פקד אפשר לראות בצד שמאל - החלונית הראשונה היא
התכונות(properties) והשניה היא ארועים (events) אם אתם רוצים לכתוב פרוצדורה למה יקרה בארוע מסויים פשוט.

כדי להציב פקד על הפורם לוחצים עליו ומקצים לו מקום..כמובן שאחר כך אפשר להזיז אותו לשנות את התכונות שלו וגם
לשים לו ארועים לדוגמא ניצור כפתור שבלחיצה (event = onclick) ישנה את השם של הפורם למה שיש בתיבת הטקסט (עוד פקד)
אז אחרי שגגרתם את שני הפקדים לפורם לוחצים על הארוע המתאים בהגדרות של הכפתור והוא יקפיץ אותכם לקוד כדי
לרשום מה יקרה בארוע (** למעבר מהיר בין הקוד לפורם אפשר להשתשמש ב F12**)

בתיבת הטקסט התכונה שלו , מה שמחזיק את מה שיש בתיבה היא text וכמו שאמרתי ניגשים אליה כמו כול שדה ברשומה של פסקל
Edit1.text

השם הראשון הוא שם המשתנה(אפשר לשנות אותו בתכונה name) והשני הוא השדה

לכן בסוף יצא משהו כזה
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Text := edit1.text
end;

ועכשיו תוכלו לגרום לפורם שלכם לכתוב ניסים הכלי:)

חוץ מתכונות וארועים יש לאובייקט פעולות מוכנות, בהמשך למה שאמרתי האובייקט הרי נקרא אובייקט מסיבה כול שהיא,
ולא רשומה, כי יש לו פעולות המוגדרות עליו למשל לפקד MEMO שהוא בעצם תיבה של תיבות טקסט,
יש פעולות שונות, לדוגמא (שם המשתנה memo1):
החזר מספר שורות memo.lines.count
נקה memo.lines.clear

למעשה כאן מוצג לפנינו אובייקט שאחר מהמרכיבים שלו הוא טיפוס אחר שהוא tstrings שהוא רשימה של סטרינגים ועליו
ביצאנו את הפעולות האלה אבל העיקרון הוא אותו דבר

לדוגמא ל אובייקט form יש פעולה show שלמעשה כול מה שהיא עושה זה לשנות את הערך של visible ל true ואז רואים
את הפורם(במקרה זה הוא גם יקפוץ מעל כולם) אבל לרוב פעולות מבצעות דברים שהמתכנת של האובייקט
לא נתן לך גישה לתכונות או שחוסכות לך זמן של לכתוב אותן.

בדלפי יש הרבה מאוד פקדים..מומלץ לדפדף בהם, לראות מה התפקידים של כול אחד, הם גם מסודרים לפי נושאים דבר המקל
עליכם למצוא משהו מסויים כאשר אתם צריכים אותו,

כמה פקדים שמומלץ לשים לב אליהם:
עבודה עם סוקטים:לכול האנשים שצעקו בפורומים רוצים סקוטים ! רוצים סקוטים!! אז הנה סוקטים, זו כמובן הדרך הקצרה,
שכול החלק פותח בשבילכם ומה שיש לכם לעשות זה להפעיל אותו לתת לו כתובת, שלא כמו הדרך הידנית(צורה זו דומה מאוד לצורה של ויזואל בייסיק)
הם נמצאים בלשונית internet , צירפתי גם תוכנית קטנה שמשמשת כקליינט
(אפשר להשתמש בה ל FTP טלנט מה שבא לכם שהוא בצורה של טקסט רגיל, דואר וכו....)

לתקייה של הקובץ

פקדי האינדי: לקראת סוף הרשימה של הפקדים לפי נושאים נמצאים פקדי האינדי, פקדים שמיישמים רעיון מסויים ויחסכו מכם
לבצע אותו בעצמכם, כמו כן תוכלו לפתח עליהם עוד ועוד דברים שתרצו, לדוגמא פקד ה INDY_FTP יכול לשמש כסרבר FTP
לכול דבר עם כול הפקודות , כמו כן ניתן לעשות כול מיני שרתי דואר והזדהות, וגם ישנם קליינטים לכול השרתים האלה, מומלץ לתת מבט.


חוץ מהפקדים האלה, וגם עליהם כול דבר שתרצו לדעת תוכלו או לעיין בעזרה(אבל זה מפלט אחרון:) ) אז תתחילו לכתוב והוא יראה
לכם את כול הפעולות (התקדמו קצת הדברים מהימים של טורבו פסקל)

סוף דבר וקישורים שונים
----------------------
לסיום אני אגיד מה שאני חושב על למידה של שפות תכנות, כול שפה אפשר ללמוד עם מדריכים בהתחלה,
אבל אז שצריך יותר עזרה צריך לפנות לחברנו הטוב הקומפיילר, אם בעזרה שלו ואם בתיקונים שלו ובסוף אפשר ללמוד כול שפה...
אני מקווה שלמדתם משהו..או לפחות שקיצרתם לכם קצת את הזמן של להבין איך עובדים במסגרת ויזואלית
דבר שיעזור לכם בכול שפה שתתקלו בה(ויזואלית כמובן).

לינק ישיר להורדה של גירסת הנסיון של Delphi 7 :(יחסוך לכם הרשמות וכאלה)
ftp://ftpd.borland.com/download/delphi/d7/Delphi7TrialInstall.exe

האתר הזה מכיל כמה קורסים באנגלית על דלפי, אם בא לכם תנו הסתכלות
http://ourworld.compuserve.com/homepages/TK_Boyd/Tut.htm

שווה גם להסתכל בפלאנט סורס קוד..יש שם כמה קודים נחמדים מהם תוכלו ללמוד הרבה
http://www.planet-source-code.com/

עד לכאן להפעם, Stealth_Fighter