Upload
mohammad-shaker
View
162
Download
2
Tags:
Embed Size (px)
Citation preview
Mohammad Shakermohammadshakergtr.wordpress.com
Intro to Event-driven Programming and Forms with Delphi@ZGTRShaker
2010, 2011, 2012
Intro to Event-driven Programming and Forms with Delphi
L02 – Controls P1
• Label • Edit• ComboBox• CheckBox• GroupBox• RadioButton• RadioGroup• ListBox
What’s for today?
Tips
General ‘Info’s & Tips
• Don’t forget the CTRL+Space auto-completion – CTRL+Space: code in-sight\auto-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
Runtime
• Form the upper bar > Run > Run.• Form the button in the upper bar.• Or F9
Sth to Remember
• Differentiate between Visible & Enabled in Component’s properties.
• Differentiate between Name & Caption in Component’s properties.
• F9: RUN.• F9+CTRL: Compile.
Changing your “.exe” icon
• “.ico” files extension• Project > Options > Application > Load Icon• It appears in the upper left corner of the application form
Chase the button Exercise Do it & enjoy catching it :D
Label
Example
• Design this
Label
• Is an Info• It can be used as an output as a “String”• “caption” manipulating.
Label1.caption:= ‘Hello World’;
String & only String
Edit
Example
• Design this
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.
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.
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.
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.
Pre-Made String Functions
• What we need the most:– String to integer : StrToInt()– Integer to string : IntToStr()
Edit Prop.
• No “Caption” Prop., “Text”.• PassWord• Visible, Enabled• Hint, ShowHint• Top, Left
Edit
• Text:“String” inner valued.• Can be used as an input & output.
• Have a supposition value (text Prop.).– Can be changed.
• ReadOnly Prop.
Var temp:integer;Edit1.Text:= temp; // output temp:= Edit1.Text; // input
Edit
• Can be used to contain other variables types.• Input:
• Output:
Var temp:integer;temp:= StrToInt(Edit1.Text);
Var temp:String;Edit1.Text:= IntToStr(temp); //no need for -IntToStr-
CheckBoxa “boolean”
CheckBox Properties
• Caption• “true OR false”• Can be used as a “boolean” input• “Checked” Prop. • Can be referenced to other “boolean” variable.
Crack the code
If (CheckBox1.Checked=true) thenBegin
// codeEnd
Elseif (CheckBox2.checked=true) then
Begin// code
Endelse
Begin// code
End
x:=5;If (CheckBox1.Checked=true) then
Beginx:=10;
EndElse
if ((CheckBox1.Checked=true) and (CheckBox2.checked=true)) then
Beginx:=11;
End;
CheckBox1: CheckedCheckBox2: Checked
x:=5;If (CheckBox1.Checked=true) then
Beginx:=10;
EndElse
if ((CheckBox1.Checked=false) and (CheckBox2.checked=false)) then
Beginx:=11;
End;
CheckBox1: Not CheckedCheckBox2: Checked
x:=5;If (CheckBox1.Checked=false) then
Beginx:=10;
EndElse
if ((CheckBox1.Checked=true) Or (CheckBox2.checked=true)) then Begin
x:=11;End;
x:=5;If (CheckBox1.Checked=true) then
Beginx:=10;
Endif ((CheckBox1.Checked=false) Or (CheckBox2.checked=false)) then
Beginx:=11;
End;
CheckBox1: Not CheckedCheckBox2: Checked
CheckBox1: CheckedCheckBox2: Not Checked
x:=5;If (CheckBox1.Checked=true) then
Beginx:=10;
EndElse
if
((CheckBox1.Checked=true)or(CheckBox2.checked=not(CheckBox1.Checked)))then
Beginx:=11;
End;
x:=5;If (CheckBox1.Checked=true) then
Beginx:=10;
EndElse
if ((CheckBox1.Checked=false) or (CheckBox2.checked=false)) then
Beginx:=11;
End;
CheckBox1: Not CheckedCheckBox2: Not Checked
CheckBox1: Not CheckedCheckBox2: Checked
Crack the codex:=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
Var Bool1,Bool2: boolean;Begin
Bool1: = CheckBox1.Checked; Bool2:-=false;If (Bool1=true) thenBegin
// your codeEndElse
if (Bool2=not(true)) then Begin
//your codeEndelseBegin
//your codeEnd
End;
Var Bool1,Bool2: boolean; x:integer;Begin
x:=5;Bool1: = CheckBox1.Checked; Bool2:-=false;If (Bool1=true) thenBegin
x:=3;EndElse
if (Bool2=not(true)) then Begin
x:=x+1;End
End;
CheckBox1: Not Checked
Var Bool1,Bool2: boolean; x:integer;Begin
x:=5;Bool1: = CheckBox1.Checked; Bool2:-=true;If (Bool1=Bool2) thenBegin
x:=3;Endif (Bool2=not(not(Bool1)) then Begin
x:=x+1;End
End;
CheckBox1: Checked
ListBox
ListBox
ListBox Prop.
• Properties:– Sorted:
• If “true”, sorted in ascending order, default false– Items:
• Items.add > (String) • Items.string > [index] > (String)
– ItemIndex:• ItemIndex > Return selected index [] > (Integer)• No “ItemIndex” change at Design time
– Columns:• Multiple “column”s in ListBox if greater than Zero “0”.
– MultiSelect:• Enables “multiselect” to be “selected” if “true”, default “false”.
– “Auto” ScrollBar
ListBox example
procedure TForm2.Button1Click(Sender: TObject);var x:integer; s:string;begin//ItemsListBox1.Items.Add('hehe');
//Strings:=ListBox1.Items.Strings[0];Label1.caption:=s;
//ItemIndexx:=ListBox1.ItemIndex;Label2.caption:=inttostr(x);end;
ComboBox
ComboBox
• Look like “ListBox”, but it’s a one “Choice at a time” one. – No “MultiSelect” Prop.
ComboBox Prop.
• Properties:– Text
• Text > (string) like a “caption” for “ComboBox”
– Items• The available “option”s for user.• Items.add > (String) // func. Runtime• Items.string > [index] > (String) // 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
ComboBox Event
• Most important: Onchange• Code: let’s “just” change the option “3” times.
ComboBox – Code example
procedure TForm2.ComboBox1Change(Sender: TObject);
begin
memo1.lines.add('krkrkrkr');
end;
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;
//Now let us add this new block of code on Button1Click
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.
RadioButton
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.
Components
Radio Button
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
RadioButton - Example
• Remember that only one option can be chosen at a time
Block of codeBlock of codeBlock of codeBlock of code
Many ways to “CRACK” the restriction
• GroupBox• RadioGroup• Panel
RadioGroupsimplifies the task of grouping radio buttons
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.
RadioGroup Prop.No “Checked” Prop., It’s “ItemIndex”
Live example.
RadioGroup Prop.procedure TForm1.NextClick(Sender: TObject);
begin
ShowMessage(RadioGroup1.Items.Strings[RadioGroup1.ItemIndex]
+ ' with Index '
+ IntToStr(RadioGroup1.ItemIndex));
end;
GroupBox
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.
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
See you!