Windows

100
Windows Programming
  • date post

    14-Nov-2015
  • Category

    Documents

  • view

    232
  • download

    5

Transcript of Windows

  • Windows Programming

  • BDE Borland Database EngineActiveX Data Object (ADO) dbExpress Library

  • BDE Borland Database Engine . :dBase, Paradox, ASCII, FoxPro, Access client server . : Oracle, Sybase, Microsoft, Informix, Interbase, DB2 ODBC .

  • BDE- install Windows

  • BDE- Delphi- BDE Data Access . : Table, Query, StroredProc, UpdateSQL, Database, Session .UpdateSQL Query- . Database Session .

  • ActiveX Data Object (ADO) ADO Microsoft- data-access OLE DB relation relation . email . SQL server- .Access SQL Server- Microsoft- ADO .Access Delphi-ADO

  • ActiveX Data Object (ADO)- : cross-platform Linux

  • ActiveX Data Object (ADO)- :ADO Delphi- ADO ADOConnection ( ) ADOCommand (SQL ) ADODataSet ( .) . ADOTable, ADOQuery, ADOStoredProc BDE ADO -

  • dbExpress Library kylix- . . . SQL . SQL SQL . HTML .

  • dbExpress Library- (ClientDataSet Provider)

  • InterBase Express (IBX)Delphi Borland- open source Interbase Server - . BDE, ADO dbExpress- . INTERBASE , .

  • BDE TTable, TQuery, TDataset, TField TDBGrid, TDBEdit TDataSource

  • TDataset Table Query SQL c

  • Table Table . , , Gotokey, Find key, GotoNearest, Locate .

  • TTable TTable DatabaseName . : C:\DELPHI\DEMOS\DATATableName .

  • 1TTable,TDatSource,TDBGrid DBGgrid1- DataSource1 DataSource1- Table1- .DatabaseName- DBDEMOS .TableName CUSTOMER .

  • 1Next Prior 2 .Next 2 .Procedure TForm1.NextClick(Sender:TObject);begin Table1.Next;end;Prior 2 .Procedure TForm1.PriorClick(Sender:TObject);begin Table1.Prior;end;First Last . Table1.First; Table1.Last; MoveBy(-2) .

  • .Property Fields[Index: Integer];Function FieldByName(const FieldName: string): TField;Property FieldCount; Fields .Var S:String;begin S:=Table1.Fields[0].FieldName;end; CustNo . 1 .S:=Table1.Fields[1].FieldName;

  • Fields FieldsByName . S:=Table1.Fields[0].AsString; AsInteger . AsBoolean, AsFloat, AsDate .FieldsByName . S:=Table1.FieldsByName(CustNo).AsString;

  • 2TTable,ListBox 2 Fields Values TTable- CUSTOMER Active =True

  • 2Fields 2 .procedure TForm1.FieldsClick(Sender: TObject);var i: Integer;begin ListBox1.Clear; for i := 0 to Table1.FieldCount - 1 do ListBox1.Items.Add(Table1.Fields[i].FieldName);end;Values 2 .procedure TForm1.ValuesClick(Sender: TObject);var i: Integer;begin ListBox2.Clear; for i := 0 to Table1.FieldCount - 1 do ListBox2.Items.Add(Table1.Fields[i].AsString);end;

  • TDateSet- TQuery TTable TDataset- .Append Insert Cancel Delete Edit Post

  • 3TTable, TDataSource , TDBGrid COUNTRY Insert Delete

  • 3Insert procedure TForm1.InsertClick(Sender: TObject);begin Table1.Insert; Table1.FieldByName('Name').AsString := 'Russia'; Table1.FieldByName('Capital').AsString := 'Moscow'; Table1.Post;end;Delete procedure TForm1.DeleteClick(Sender: TObject);begin Table1.Delete;end;

  • Table- Table- SetKey- GotoKey . . table- IndexName . .Table1.IndexName := CityIndex;Table1.Active := True;Table1.SetKey;Table1.FieldByName(City).AsString := Edit1.Text;Table1.GotoKey;

  • 4TTable, TDataSource, TDBGrid, TButton, TLabel, TEdit Search Table Customer

  • 4Search .procedure TSearchDemo.SearchClick(Sender: TObject);begin Table1.SetKey; Table1.FieldByName(CustNo).AsString := Edit1.Text; Table1.GotoKey;end; GotoKey GotoNearest

  • 4 exception procedure TSearchDemo.SearchClick(Sender: TObject);begin Table1.SetKey; Table1.FieldByName(CustNo).AsString := Edit1.Text; if not Table1.GotoKey then raise Exception.CreateFmt('Cannot find CustNo %g', [CustNo]);end;

  • DataSet- DataSet- .procedure SetRangeStart;procedure SetRangeEnd;procedure ApplyRange;procedure CancelRange;Table .procedure EditRangeStart;procedure EditRangeEnd;procedure SetRange;

  • SetRangeStart .SetRangeEnd .ApplyRange CancelRange

  • 5TTable, TDataSource TdbGrid Table Customer .2 TLabel Start Range End Range .2 Tedit RangeStart RangeEnd .ApplyRange CancelRange 2 SetRangeStart SetRangeEnd .

  • 5ApplyRange procedure TForm1.ApplyRangeBtnClick(Sender: TObject);begin Table1.SetRangeStart; if RangeStart.Text '' then Table1. Fields[0].AsString := RangeStart.Text; Table1.SetRangeEnd; if RangeEnd.Text '' then Table1.Fields[0].AsString := RangeEnd.Text; Table1.ApplyRange;end;

  • 5CancelRange procedure TForm1.CancelRangeBtnClick(Sender: TObject);begin Table1.CancelRange;end;

  • 5 .

  • Linked cursors one-to-many CUSTOMER ORDERS , .

  • 62 TTable, 2 TDataSources, 2 TDBGrid TTable- Customer . TTable- Order .Orders Customer .Table2.MasterSource = DataSource1Table2.MasterField = CustNoTable2.IndexName = CustNo CUSTOMER ORDERS .

  • 6Table2- MasterSource DataSource .ORDERS table- Table2- . :2 CUSTOMER ORDERS Table2.MasterFields CustNo .

  • 6 Table1.MasterFields := CustNo | SaleData | ShipDate; .Object Inspector MasterFields 2 Field Link Designer Field Link Designer Joined Fields CustNo->CustNo .

  • 6 .

  • TDataSource TDataSource data-aware data access .

  • TDataSource- .TDataSource- 3 .OnDataChangeOnStateChangeOnUpdateData OnDataChange DataSet- dsInactive .OnStateChange Dataset- .Dataset 6 . TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, dsCalcFields);OnUpdateData .

  • 7TTable, TDataSource, 5 TEdit, 6 TLabel, 8 TTable1- COUNTRY- TLabel2 Country TLabel3 Capital TLabel4 Continent TLabel5 Area TLabel6 Population 5 edit .Edits: array[1..5] of TEdit; Next, Last, Prior, First, Insert, Append, Post, Cancel . procedure TForm1.FirstClick(Sender: TObject);begin Table1.First;end;

  • 7 / /procedure TForm1.LastClick(Sender: TObject);begintable1.Last;end;procedure TForm1.PriorClick(Sender: TObject);Begin Table1.Prior;end;procedure TForm1.FirstClick(Sender: TObject);begintable1.First;end;procedure TForm1.InsertClick(Sender: TObject);begintable1.Insert;end;

  • 7 / /procedure TForm1.AppendClick(Sender: TObject);beginTable1.Append;end;procedure TForm1.PostClick(Sender: TObject);begintable1.Post;end;procedure TForm1.CancelClick(Sender: TObject);beginTable1.Cancel;end;

  • 7 OnCreate .procedure TForm1.FormCreate(Sender: TObject);var i: Integer;begin for i := 1 to 5 do Edits[i] := TEdit(FindComponent('Edit' + IntToStr(i))); Table1.Open;end;

  • 7 OnDataChange . Table1.Next .procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);var i: Integer;begin for i := 1 to 5 do Edits[i].Text := Table1.Fields[i - 1].AsString;end;

  • 7Post edit .procedure TForm1.DataSource1UpdateData(Sender: TObject);var i: Integer;begin for i := 1 to 5 do Table1.Fields[i - 1].AsString := Edits[i].Text;end; .procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if DataSource1.State dsEdit then Table1.Edit;end;

  • 7Dataset DataSource- State .procedure TForm1.DataSource1StateChange(Sender: TObject);var S: String;begin case Table1.State of dsInactive: S := 'Inactive'; dsBrowse: S := 'Browse'; dsEdit: S := 'Edit'; dsInsert: S := 'Insert'; dsSetKey: S := 'SetKey'; dsCalcFields: S := 'CalcFields'; end; Label1.Caption := S;end;

  • 7

  • InterbaseBorland Interbase - .Nowell NetWareWindows NT

  • Interbase Interactive SQL 10GB 65536 65536 1000 64

  • Interbase Server Manager

  • CREATE DATABASE database

  • CREATE TABLE table (col {datatype | COMPUTED BY () | domain} [DEFAULT {literal | NULL | USER}] [NOT NULL] [] [COLLATE collation] [, | ...]);table , col ;datatype- (SMALLINT, INTEGER, FLOAT, DOUBLE PRECISION, DECIMAL, NUMERIC, DATE, CHAR, VARCHAR, NCHAR, )domain DEFAULT NOT NULL COLLATE - [] .

  • . = {{PRIMARY KEY | UNIQUE} (col[,col...]) | FOREIGN KEY (col [, col ...]) REFERENCES other_table | CHECK ()} = { { | ()} | [NOT] BETWEEN AND | [NOT] LIKE [ESCAPE ] | [NOT] IN ( [, ...] | = {col [] | | | | NULL | USER | RDB$DB_KEY } [COLLATE collation]

  • PRIMARY KEY CREATE TABLE REGION ( REGION REGION_NAME NOT NULL PRIMARY KEY,POPULATIONINTEGER NOT NULL);

    CREATE DOMAIN REGION_NAME AS VARCHAR(40) CHARACTER SET WIN1251 COLLATE PXW_CYRL;

  • Unique CREATE TABLE GOODS (MODEL SMALLINT NOT NULL UNIQUE,NAMECHAR(10) NOT NULL, ITEMID INTEGER NOT NULL, CONSTRAINT MOD_UNIQUE UNIQUE (NAME, ITEMID));

  • PRIMARY KEY, CHECK CREATE TABLE JOB(JOB_CODE JOBCODE NOT NULL,JOB_GRADEJOBGRADE NOT NULL,JOB_REGION REGION_NAME NOT NULL,JOB_TITLE VARCHAR(25) CHARACTER SET WIN1251 COLLATE PXW_CYRL NOT NULL,MIN_SALARY SALARY NOT NULL,MAX_SALARY SALARY NOT NULL,JOB_REQ BLOB(400,1) CHARACTER SET WIN1251,LANGUAGE_REQ VARCHAR(15) [5],PRIMARY KEY (JOB_CODE, JOB_GRADE, JOB_REGION),FOREIGN KEY (JOB_REGION) REFERENCES REGION (REGION),CHECK (MIN_SALARY < MAX_SALARY));

  • CREATE TABLE SALARY_HISTORY (EMP_NO EMPNO NOT NULL,CHANGE_DATE DATE DEFAULT "NOW" NOT NULL,UPDATER_ID VARCHAR(20) NOT NULL,OLD_SALARY SALARY NOT NULL,PERC_CHANGEDOUBLE PRECISION DEFAULT 0 NOT NULLCHECK (PERC_CHANGE BETWEEN -50 AND 50),NEW_SALARY COMPUTED BY(OLD_SALARY + OLD_SALARY * PERC_CHANGE / 100),PRIMARY KEY (EMP_NO, CHANGE_DATE, UPDATER_ID),FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE (EMP_NO));

  • QuerySQL Structured Query Language Delphi SQL- . Delphi SQL .OracleSybaseInterbaseMicrosoftDelphi SQL .

  • QueryTQuery SQL .DatabaseName SQL select * from country Active true SQL design time run time ,

  • SQL 3 3 Query . 1 Query SQL 3 . SQL TStrings . SQL , .Query1.Close;Query1.SQL.Clear

  • Query . Query1.SQL.Add(Select * from Country);Query1.SQL.Add(where Name = Argentina); Add SQL- . .Query1.Open;

  • 8TQuery, TDataSource TdbGrid, TOpenDialog 4 Tbutton Caption .LoadC. . . . . . C. . . . ia SQL C Select * from Country where Name like C% C Select * from Country where Name like %C%; ia Select * from Country where Name like %ia;

  • 8Load .procedure TForm1.LoadClick(Sender: TObject);begin if OpenDialog1.Execute then with Query1 do begin Close; SQL.LoadFromFile(OpenDialog1.FileName); Open; end;end;

  • 8

  • TQuery Delphi- . where insert- .Select * from Country where Name like C% .Select * from County where Name like :NameStrNameStr Design time Run time . 2 . TQuery params Dataset- Datasource property Params[Index: Word];function ParamByName(const Value: string);property DataSource;

  • Params 4 . TQuery- Prepare TQuery Params TQuery- Query1.Close;Query1.Prepare;Query1.Params[0].AsString := Argentina;Query1.Open;

  • SQL select * from Country where Name = :NameStr . select * from Country where Name = Argentina NameStr " Params . Params .Params[1].AsString := SomeValue;

  • 9TQuery, TDataSource, TDBGrid TTabSet, TButton TQuery.DatabaseName DBDEMOS OnCreate .procedure TForm1.FormCreate(Sender: TObject);var i : Byte;begin Query1.Prepare; for i:=0 to 25 do TabSet1.Tabs.Add(Chr(Byte('A')+i));end; Query1 SQL select * from employee where LastName like :LastNameStr

  • 9TabSet1Change .procedure TForm1.TabSet1Change(Sender: TObject; NewTab: Integer; var AllowChange: Boolean);begin with Query1 do begin Close; Params[0].AsString:=TabSet1.Tabs.Strings[NewTab]+'%; Open; end;end;

  • 9Button1- Caption- B . Button1- OnClick .procedure TForm1.Button1Click(Sender: TObject);beginQuery1.Close;Query1.Prepare;Query1.Params[0].AsString:='B%';Query1.Open;end;

  • TDatasource TQuery 1:N TQuery- Dataset- DataSource .ORDERS CUSTOMERS select * from Orders where CustNo = :CustNo :CustNo TQuery.DataSource . Params .

  • 10TTable, TDataSource TDBGrid CUSTOMER TQuery, TDataSource TDBGrid SQL select * from Orders where CustNo = :CustNoQuery1- DatabaseName DBDEMOS Query1 DataSource DataSource1 Active = True

  • ORDERS CustNo, OrderNo, SaleDate ITEMS PartNo Qty 5 DataSet Grid- .

  • 11TTable, TDataSource TDBGrid . TTable SQL . select O.CustNo, O.OrderNo, O.SaleDate, I.PartNo, I.Qty from Orders O, Items I where O.OrderNo = I.OrderNo

  • 11

  • DBGridDBGrig . , . DBGrid . , Insert , Down , Ctrl+Del . Columns Grid- , . : (, font, , , )ButtonStyle DropDownRows grid- .

  • DBNavigator DBNavigator .DBNavigator- VisibleButtons . dataset .

  • DBNavigator

  • Data Aware ControlDBText .DBEdit .DBCheckBox . ValueChecked ValueUnChecked . True False .DBMemo . memo blob . Autodisplay True blob .DBRichEdit .

  • Data Aware Control . DBListBox,DBComboBox,DBRadioGroup Items .

  • Data Aware ControlDBListBox . . 6-7 . DBCombox . csDropDown . . Style 5 .DBRadioGroup radio . . TDBImage . . Picture . AutoDisplay True .

  • Dataset TDataset , , , . . . , . . .

  • Dataset .dsBrowse , dsEdit . Edit Data source AutoEdit True DBGRID, DBEDIT data-aware . dsInsert Insert DBNavigator- . dsInactive - dsSetkey dataset Setkey GotKey, GotoNearest . dsCalcfields dsNewValue, dsOldValue, and dsCurValue dsFilter onFilter Record

  • 12File New Project View Project Manager Database Form Wizard Create a master/detail form Create a form using TQuery Objects .Next Programm Files/Common files/Borland shared/Data Orders.db .Next Orders.db OrderNo, CustNo, SaleDate, ShipDate, ItemsTotal Next "Horizontal" .Next ITEMS.DB . grid- .Next Master Detail ListBoxes OrderNo Add. Next .Generate main form .

  • 13TQuery 2, TDataSource 1, TDBGrid 1 - .TDBGrid1 TDataSource .TDataSource TQuery2 .TQuery1 Active true .TQuery2 SQL .select * from Items I, Parts P where (I.OrderNo =:OrderNo) and(I.PartNo=P.PartNo)TQuery2 DatabaseName DBDEMOS . TQuery2 Fields Editor- . AddFields- OrderNo, PartNo, Qty ListPrice . NewField Name Total , Type Currency Field Type Calculated Ok . Fields Editor . Active true .

  • 13Object Inspector Query2 Events OnCalcFields .procedure TForm1.Query2CalcFields(DataSet: TDataset);begin Query2Totals.Value:=Query2Qty.Value*Query2ListPrice.Value;end;TQuery2 Fields Editor . NewField Name Totals , Type Currency , Field Type Calculated Ok . Fields Editor Totals .

  • 13Object Inspector Query1 Events OnCalcFields .procedure TForm1.Query1CalcFields(DataSet: TDataset);var R : Double;begin R:=0; with Query2 do begin DisableControls; Close; Open; repeat R:=R+Query2Total.Value; Next; until EOF; First; EnableControls; end; Query1Totals.Value:=R;end;

  • TDBGrid- DBGrid- , , .DBGrid Options .DgEditing grid- . true .DgTitles .DgIndicator .DgColumnResize .dgColLines dgRowLines dgTabs tab shift- tab .

  • TDBGrid- TDBGrid- Option- TDBGridOption = (dgEditing, gdAlwaysShowEditor, dgTitles,dgIndicator, dgColumnResize, dgColLines,dgRowLines, dgTabs); Runtime .DBGrid1.Options := [dgTitles, dgIndicator]; . DBGrid1.Options := DBGrid1.Options + [dgTitles]; boolean ShowTitles procedure TForm1.Button3Click(Sender: TObject);begin if ShowTitles then DBGrid1.Options := DBGrid1.Options + [dgTitles] else DBGrid1.Options := DBGrid1.Options - [dgTitles]; ShowTitles := not ShowTitles;end;

  • TDBGrid- .Query1.FieldByName(CustNo).Visible := False;Query1CustNo.Visible := False; .Query1.FieldByName(CustNo).Index := 1;Query1CustNo.Index := 2; .Query1.FieldByName(CustNo).DisplayWidth := 12;Query1CustNo.DisplayWidth := 12;

  • 14TTable, TDataSource, TListBox, TScrollBox,TDBGrid, TCheckBox, 2 TButton CUSTOMER OnCreate ListBox , CheckBox . CheckBox . CheckBox- Caption . ListBox ListBox- .

  • procedure TForm1.FormCreate(Sender: TObject);var i : Word; R : Array[0..49] of TCheckBox;begin {Fill ListBox} ListBox1.Clear; for i:=0 to Table1.FieldCount-1 do ListBox1.Items.Add(Table1.Fields[i].FieldName); {Make CheckBoxes} for i:=0 to Table1.FieldCount-1 do begin R[I] := TCheckBox.Create(Self); R[I].Parent := ScrollBox1; R[I].Caption := Table1.Fields[i].FieldName; R[I].Left := 10; R[I].Top := I * CheckBox1.Height + 5; R[I].Width := 200; R[I].Checked := True; R[I].OnClick := ChBClick; end;end;

  • downButton procedure TForm1.downButtonClick(Sender: TObject);var i : Integer;begin with ListBox1 do if (ItemIndex
  • TDBMemoMemo BLOB . . BLOB Autodsiplay .

  • Rave Report 5.0Nevrona 3

  • Rave Report 5.0 Delphi Rave TRvDataSetConnection Object Inspector DataSet dataset/Query,Table/ Rave Visual Designer Rave Visual Designer Tools Rave Designer Data Connections File New Data Object Data Object Type Direct Data View Next .

  • Rave Report 5.0Active Data Connections RVDataSetConnection1 Finish . Rave Visual Designer Project Tree Data View Dictionary DataView1 Tools Report Wizards Simple Table Simple Table .DataView1 Next 2 3 Next , margin, Generate File|Save Save As MyRave.rav. Rave Visual Designer Delphi .

  • Rave TRvProject Object Inspector ProjectFile MyRave.rav Standard Tbutton Object Inspector Events tab OnClick 2 Rave project F9