Tata AIG General Insurance Company - Insurer Innovation Award 2024
Delphi L02 Controls P1
1. Intro to Event-driven Programming
and Forms with Delphi
L02 – Controls P1
Mohammad Shaker
mohammadshakergtr.wordpress.com
Intro to Event-driven Programming and Forms with Delphi
@ZGTRShaker
2010, 2011, 2012
5. General ‘Info’s & Tips
• Don’t forget the CTRL+Space auto-completion
– CTRL+Space: code in-sightauto-completion.
• You can’t write in Arabic in a component’s “NAME”.
• Delphi is a not a “Case Sensitive ” language.
• dpr *: when saving, the project you have will be saved as a
‘dpr’ termination.
*dpr: Delphi Project
6. Runtime
• Form the upper bar > Run > Run.
• Form the button in the upper bar.
• Or F9
7. Sth to Remember
• Differentiate between Visible & Enabled in Component’s
properties.
• Differentiate between Name & Caption in Component’s
properties.
• F9: RUN.
• F9+CTRL: Compile.
8. Changing your “.exe” icon
• “.ico” files extension
• Project > Options > Application > Load Icon
• It appears in the upper left corner of the application form
15. Pre-Made String Functions
• StrAlloc
– Allocates a character buffer of a given size on the heap.
• StrBufSize
– Returns the size of a character buffer allocated using StrAlloc or
StrNew.
• StrCat
– Concatenates two strings.
• StrComp
– Compares two strings.
• StrCopy
– Copies a string.
16. Pre-Made String Functions
• StrDispose
– Disposes a character buffer allocated using StrAlloc or StrNew.
• StrECopy
– Copies a string and returns a pointer to the end of the string.
• StrEnd
– Returns a pointer to the end of a string.
• StrFmt
– Formats one or more values into a string.
• StrIComp
– Compares two strings without case sensitivity.
• StrLCat
– Concatenates two strings with a given maximum length of the resulting
string.
17. Pre-Made String Functions
• StrLComp
– Compares two strings for a given maximum length.
• StrLCopy
– Copies a string up to a given maximum length.
• StrLen
– Returns the length of a string.
• StrLFmt
– Formats one or more values into a string with a given maximum length.
• StrLIComp
– Compares two strings for a given maximum length without case sensitivity.
• StrLower
– Converts a string to lowercase.
• StrMove
– Moves a block of characters from one string to another.
18. Pre-Made String Functions
• StrNew
– Allocates a string on the heap.
• StrPCopy
– Copies a Pascal string to a null-terminated string.
• StrPLCopy
– Copies a Pascal string to a null-terminated string with a given maximum length.
• StrPos
– Returns a pointer to the first occurrence of a given substring within a string.
• StrRScan
– Returns a pointer to the last occurrence of a given character within a string.
• StrScan
– Returns a pointer to the first occurrence of a given character within a string.
• StrUpper
– Converts a string to uppercase.
19. Pre-Made String Functions
• What we need the most:
– String to integer
– Integer to string
: StrToInt()
: IntToStr()
21. Edit
• Text:“String” inner valued.
• Can be used as an input & output.
Var temp:integer;
Edit1.Text:= temp;
temp:= Edit1.Text;
// output
// input
• Have a supposition value (text Prop.).
– Can be changed.
• ReadOnly Prop.
22. Edit
• Can be used to contain other variables types.
• Input:
Var temp:integer;
temp:= StrToInt(Edit1.Text);
• Output:
Var temp:String;
Edit1.Text:= IntToStr(temp); //no need for -IntToStr-
25. Crack the code
If (CheckBox1.Checked=true) then
Begin
// code
End
Else
if (CheckBox2.checked=true) then
Begin
// code
End
else
Begin
// code
End
26. x:=5;
If (CheckBox1.Checked=true) then
CheckBox1: Not Checked
Begin
CheckBox2: Checked
x:=10;
End
Else
if ((CheckBox1.Checked=false) and (CheckBox2.checked=false))
then
Begin
x:=11;
End;
x:=5;
If (CheckBox1.Checked=true) then
CheckBox1: Checked
Begin
CheckBox2: Checked
x:=10;
End
Else
if ((CheckBox1.Checked=true) and (CheckBox2.checked=true))
then
Begin
x:=11;
End;
27. x:=5;
CheckBox1: Checked
If (CheckBox1.Checked=true) then
CheckBox2: Not Checked
Begin
x:=10;
End
if ((CheckBox1.Checked=false) Or (CheckBox2.checked=false)) then
Begin
x:=11;
End;
x:=5;
CheckBox1: Not Checked
If (CheckBox1.Checked=false) then
CheckBox2: Checked
Begin
x:=10;
End
Else
if ((CheckBox1.Checked=true) Or (CheckBox2.checked=true)) then
Begin
x:=11;
End;
28. x:=5;
If (CheckBox1.Checked=true) then
CheckBox1: Not Checked
Begin
CheckBox2: Checked
x:=10;
End
Else
if ((CheckBox1.Checked=false) or (CheckBox2.checked=false))
then
Begin
x:=11;
End;
x:=5;
If (CheckBox1.Checked=true) then
Begin
x:=10;
End
Else
if
CheckBox1: Not Checked
CheckBox2: Not Checked
((CheckBox1.Checked=true)or(CheckBox2.checked=not(CheckBox1.Checked)))
then
Begin
x:=11;
End;
29. Crack the code
x:=5;
If (CheckBox1.Checked=true) then
Begin
x:=10;
End;
Else
if (CheckBox2.Checked=true) then
Begin
x:=11;
End;
CheckBox1: Not Checked
CheckBox2: Not Checked
30. Var Bool1,Bool2: boolean;
Begin
Bool1: = CheckBox1.Checked; Bool2:-=false;
If (Bool1=true) then
Begin
// your code
End
Else
if (Bool2=not(true)) then
Begin
//your code
End
else
Begin
//your code
End
End;
31. Var Bool1,Bool2: boolean; x:integer;
Begin
CheckBox1: Not Checked
x:=5;
Bool1: = CheckBox1.Checked; Bool2:-=false;
If (Bool1=true) then
Begin
x:=3;
End
Else
if (Bool2=not(true)) then
Begin
x:=x+1;
End
End;
Var Bool1,Bool2: boolean; x:integer;
Begin
x:=5;
Bool1: = CheckBox1.Checked; Bool2:-=true;
If (Bool1=Bool2) then
Begin
x:=3;
End
if (Bool2=not(not(Bool1)) then
Begin
x:=x+1;
End
End;
CheckBox1: Checked
37. ComboBox
• Look like “ListBox”, but it’s a one “Choice at a time” one.
– No “MultiSelect” Prop.
38. ComboBox Prop.
• Properties:
– Text
• Text > (string) like a “caption” for “ComboBox”
– Items
• The available “option”s for user.
• Items.add > (String)
• Items.string > [index] > (String)
// func. Runtime
// func. Runtime
– ItemIndex
• ItemIndex > Return selected index [] > (Integer)
• “ItemIndex” changable at Design time , in contrary to “ListBox”
– Sorted:
• If “true”, sorted in ascending order, default false
39. ComboBox Event
• Most important: Onchange
• Code: let’s “just” change the option “3” times.
40. ComboBox – Code example
procedure TForm2.ComboBox1Change(Sender: TObject);
begin
memo1.lines.add('krkrkrkr');
end;
41. //Now let us add this new block of code on Button1Click
procedure TForm2.Button1Click(Sender: TObject);
var x:integer; s:string;
begin
if ComboBox1.ItemIndex=0 then
memo1.Lines.Add('You chose English')
else
begin
if ComboBox1.ItemIndex=1 then
memo1.Lines.Add('You chose Arabic')
else
begin
if ComboBox1.ItemIndex=2 then
memo1.Lines.Add('You chose German')
else
if ComboBox1.ItemIndex=3 then
memo1.Lines.Add('You chose French');
end;
end;
end;
42. ComboBox – Code example
• Now, what is the output on “Memo1” (Just Think it as if it’s a
Multi-Lines “Edit”) that can show just 5 lines, without a
scrollbar, when we choose 3 options (Arabic, German, French)
in row, and clicking the button after each choice?
• Think Think Think.
44. RadioButton
• What it looks like?
• It’s like when we choose the ages, languages,
– example
– It’s represent “constant values” for one “variables”
• So it’s like CheckBox that we learned but with a key
difference.
46. RadioButton - Differences
• Let’s have 3 CheckBox & 3 Radio buttons.
CheckBox
RadioButton
We can select all 3
(one or more)
We can’t select all 3
(just one of them)
Not connected with each other
Connected with each other
47. RadioButton - Example
•
Remember that only one option can be chosen at a time
Block of code
Block of code
Block of code
Block of code
48. Many ways to “CRACK” the restriction
• GroupBox
• RadioGroup
• Panel
50. RadioGroup Prop.
• Item:
– Numbers of option in the “RadioGroup” depends on “item” Prop.
– each string in “item” makes a radio button appears in the group box
with string as its “caption”.
• ItemIndex:
– determines which “RadioButton” is currently selected.
• It’s which we’ll deal with in code in “Runtime”.
• Column:
– Display the radio buttons in a single column or in multiple columns.
54. GroupBox
• What it looks like?
• Its main function is to arrange all the related “control”s in
the “form”.
• The most known related “control” is “RadioGroup” as we have
seen.
• “Caption” Prop. Labels the GroupBox
• Remember “cut & paste” method.
55. Adding component to GroupBox
• Tool Pallete > Choose what you want to add
– Place it in the “GroupBox”
• Now you can deal with your GroupBox as a complete block
that contains related “control”s