Logo New book: Delphi 2007 Handbook
My blog in online
Delphi tech support service: support.marcocantu.com
Google
  Web www.marcocantu.com

Menu for Development

Site Menu
Delphi 2007 Handbook
Mastering Borland Delphi 2005
Essential Pascal
Essential Delphi
Buy Books Online
Code Repository
Newsgroups
White Papers
Tools
Conferences
Training
Delphi Links
Contact Marco

My Other Sites
Italian Site (www.marcocantu.it)
Developers Newsgroups Browser (dev.newswhat.com)
My town (www.piazzacavalli.net)
the delphi search
Wintech Italia (my company)

Breaking News
Buy Mastering Borland Delphi 2005 from Amazon
Free ebook: Mastering Delphi Update for Delphi 2006

Advertising
Home My Blog Books My Bookstore Development Links Marco


Home: Code Repository: Mastering Delphi 6

Chapter 13 - Project SendToDb

Project Structure

SendToDb.dpr
program SendToDb;

uses
  Forms,
  SendToF in 'SendToF.pas' {Form1};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
SendToF.pas
unit SendToF;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBTables, DB, StdCtrls, Grids, DBGrids, ComCtrls;

type
  TForm1 = class(TForm)
    Table1: TTable;
    Table1Name: TStringField;
    Table1Capital: TStringField;
    Table1Continent: TStringField;
    Table1Area: TFloatField;
    Table1Population: TFloatField;
    EditCapital: TEdit;
    EditPopulation: TEdit;
    EditArea: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    ComboContinent: TComboBox;
    Button1: TButton;
    Button2: TButton;
    ComboName: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ComboNameKeyPress(Sender: TObject; var Key: Char);
    procedure ComboNameClick(Sender: TObject);
  private
    { Private declarations }
  public
    procedure GetData;
    procedure SendData;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.GetData;
begin
  Table1.FindNearest ([ComboName.Text]);
  ComboName.Text := Table1Name.AsString;
  EditCapital.Text := Table1Capital.AsString;
  ComboContinent.Text := Table1Continent.AsString;
  EditArea.Text := Table1Area.AsString;
  EditPopulation.Text := Table1Population.AsString;
end;

procedure TForm1.SendData;
begin
  // raise an exception if there is no name
  if ComboName.Text = '' then
    raise Exception.Create ('Insert the name');

  // check if the record is already in the table    
  if Table1.FindKey ([ComboName.Text]) then
  begin
    // modify found record
    Table1.Edit;
    Table1Capital.AsString := EditCapital.Text;
    Table1Continent.AsString := ComboContinent.Text;
    Table1Area.AsString := EditArea.Text;
    Table1Population.AsString := EditPopulation.Text;
    Table1.Post;
  end
  else
  begin
    // insert new record
    Table1.InsertRecord ([ComboName.Text,
      EditCapital.Text, ComboContinent.Text,
      EditArea.Text, EditPopulation.Text]);
    // add to list
    ComboName.Items.Add (ComboName.Text)
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetData;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SendData;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // fill the list of names
  Table1.Open;
  while not Table1.Eof do
  begin
    ComboName.Items.Add (Table1Name.AsString);
    Table1.Next;
  end;
end;

procedure TForm1.ComboNameKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    GetData;
end;

procedure TForm1.ComboNameClick(Sender: TObject);
begin
  GetData;
end;

end.
SendToF.dfm
object Form1: TForm1
  Left = 201
  Top = 113
  Width = 424
  Height = 287
  Caption = 'Send To Database'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = True
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 72
    Top = 88
    Width = 28
    Height = 13
    Caption = '&Name'
  end
  object Label2: TLabel
    Left = 72
    Top = 123
    Width = 32
    Height = 13
    Caption = '&Capital'
    FocusControl = EditCapital
  end
  object Label3: TLabel
    Left = 72
    Top = 158
    Width = 45
    Height = 13
    Caption = 'C&ontinent'
    FocusControl = ComboContinent
  end
  object Label4: TLabel
    Left = 72
    Top = 193
    Width = 50
    Height = 13
    Caption = '&Population'
    FocusControl = EditPopulation
  end
  object Label5: TLabel
    Left = 72
    Top = 228
    Width = 22
    Height = 13
    Caption = '&Area'
    FocusControl = EditArea
  end
  object EditCapital: TEdit
    Left = 160
    Top = 119
    Width = 150
    Height = 21
    Color = clWindow
    TabOrder = 1
  end
  object EditPopulation: TEdit
    Left = 160
    Top = 189
    Width = 150
    Height = 21
    Color = clWindow
    TabOrder = 2
  end
  object EditArea: TEdit
    Left = 160
    Top = 224
    Width = 150
    Height = 21
    Color = clWindow
    TabOrder = 3
  end
  object ComboContinent: TComboBox
    Left = 160
    Top = 154
    Width = 150
    Height = 21
    Color = clWindow
    ItemHeight = 13
    TabOrder = 4
    Items.Strings = (
      'South America'
      'North America'
      'Europe'
      'Asia'
      'Africa')
  end
  object Button1: TButton
    Left = 104
    Top = 24
    Width = 75
    Height = 25
    Caption = '&Get'
    TabOrder = 5
    OnClick = Button1Click
  end
  object Button2: TButton
    Left = 200
    Top = 24
    Width = 75
    Height = 25
    Caption = '&Send'
    TabOrder = 6
    OnClick = Button2Click
  end
  object ComboName: TComboBox
    Left = 160
    Top = 83
    Width = 150
    Height = 21
    Color = clWindow
    ItemHeight = 13
    TabOrder = 0
    OnClick = ComboNameClick
    OnKeyPress = ComboNameKeyPress
  end
  object Table1: TTable
    DatabaseName = 'DBDEMOS'
    TableName = 'COUNTRY.DB'
    Left = 16
    Top = 8
    object Table1Name: TStringField
      DisplayWidth = 17
      FieldName = 'Name'
      Visible = False
      Size = 24
    end
    object Table1Capital: TStringField
      DisplayWidth = 18
      FieldName = 'Capital'
      Size = 24
    end
    object Table1Continent: TStringField
      DisplayWidth = 18
      FieldName = 'Continent'
      Size = 24
    end
    object Table1Area: TFloatField
      DisplayWidth = 12
      FieldName = 'Area'
    end
    object Table1Population: TFloatField
      DisplayWidth = 12
      FieldName = 'Population'
    end
  end
end