delphi l02 controls p1

Post on 14-May-2015

160 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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!

top related