Программирование
Главная » FAQ |
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) TreeView1: TTreeView; Button1: TButton; PageControl1: TPageControl; procedure Button1Click(Sender: TObject); procedure TreeView1Change(Sender: TObject; Node: TTreeNode); procedure PageControl1Change(Sender: TObject); private procedure addItem(t: String); { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} Procedure TForm1.addItem(t:String); var TabSheet:TTabSheet; Node:TTreenode; begin TabSheet:=TTabSheet.Create(Self); TabSheet.PageControl:=PageControl1; TabSheet.caption:=t; Node:=TreeView1.Items.Add(nil, t); Node.data:=TabSheet; //ассоциируем узел с страницей TabSheet.tag:=Integer(Node); // ассоциируем страницу с узлом end; procedure TForm1.Button1Click(Sender: TObject); begin TreeView1.HideSelection:=false; addItem('Item1'); addItem('Item2'); addItem('Item3'); addItem('Item4'); end; procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode); begin PageControl1.ActivePage:=TTabSheet(Node.data);// Доступ к ассоциированной странице через узел end; procedure TForm1.PageControl1Change(Sender: TObject); begin TreeView1.Selected:=TTreeNode(Pointer(PageControl1.ActivePage.tag));// Доступ к ассоциированному узлу через страницу end; end. |
рrocedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var bmpImage: tBitmap; intX, intY: Integer; begin if DataSource1.DataSet.RecNo > 0 then begin if column.FieldName = 'COUNTRY' then with DBGrid1.Canvas do begin fillRect(rect); bmpImage := tBitmap.Create; try if DBGrid1.DataSource.DataSet.FieldByName('COUNTRY').AsInteger = 0 then bmpImage.Assign(image0.Picture.Bitmap); if DBGrid1.DataSource.DataSet.FieldByName('COUNTRY').AsInteger = 1 then bmpImage.Assign(image1.Picture.Bitmap); intX := ((rect.Right - rect.Left) div 2) - (bmpImage.Width div 2); intY := ((rect.Bottom - rect.Top) div 2) - (bmpImage.Height div 2); draw(rect.Left + intX, rect.Top + intY, bmpImage); finally bmpimage.Free; end; end; end; end; |
unit Project1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, ComCtrls; type TfmMain = class(TForm) btnNewDB: TButton; DBGrid1: TDBGrid; btnSearch: TButton; Edit1: TEdit; procedure btnNewDBClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btnSearchClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var fmMain: TfmMain; implementation {$R *.dfm} uses DB, ADODB, ComObj; const dbName : String = 'mybase.mdb'; MasterTable : String = 'MyMasterTable'; var ADOCommand : TADOCommand; ADOConnection : TADOConnection; ADODataSetMaster : TADODataSet; MasterDataSource : TDataSource; strCmdText : String; strConnectString : String; procedure TfmMain.FormCreate(Sender: TObject); begin // Строка для подключения к базе strConnectString := 'Provider=Microsoft.Jet.OLEDB.4.0' + ';Data Source=' + dbName + ';Jet OLEDB:Engine Type=5'; // Создаём переменные и подключаемся к базе ADOConnection := TADOConnection.Create(nil); ADOConnection.ConnectionString := strConnectString; ADOConnection.LoginPrompt := False; ADOConnection.Mode := cmReadWrite; ADOConnection.Connected := True; ADOCommand := TADOCommand.Create(nil); ADOCommand.Connection := ADOConnection; ADOCommand.CommandType := cmdText; ADODataSetMaster := TADODataSet.Create(nil); ADODataSetMaster.Connection := ADOConnection; ADODataSetMaster.CommandType := cmdText; ADODataSetMaster.CommandText := 'SELECT * FROM ' + MasterTable; ADODataSetMaster.Active := True; MasterDataSource := TDataSource.Create(nil); MasterDataSource.DataSet := ADODataSetMaster; // Выводим данные в DBGrid DBGrid1.DataSource := MasterDataSource; end; procedure TfmMain.btnNewDBClick(Sender: TObject); var ADOX: OLEVariant; i: integer; j: int64; begin // Создаем базу ADOX := CreateOleObject('ADOX.Catalog'); ADOX.Create(strConnectString); ADOX := NULL; // Подключаемся к созданной базе ADOConnection := TADOConnection.Create(nil); ADOConnection.ConnectionString := strConnectString; ADOConnection.LoginPrompt := False; ADOConnection.Mode := cmReadWrite; ADOConnection.Connected := True; ADOCommand := TADOCommand.Create(nil); ADOCommand.Connection := ADOConnection; ADOCommand.CommandType := cmdText; // Создаём в базе таблицу strCmdText := 'CREATE TABLE ' + MasterTable + '([id] COUNTER,'+ '[ИНН] DECIMAL PRIMARY KEY NOT NULL UNIQUE,' + '[Имя] VARCHAR(150) WITH COMPRESSION,' + '[Адрес] VARCHAR(150) WITH COMPRESSION,' + '[Телефон] VARCHAR(150) WITH COMPRESSION)'; ADOCommand.CommandText := strCmdText; ADOCommand.Execute; // Просто пример, добавляем данные в таблицу j := 665906037862; for i := 193 to 196 do begin strCmdText := 'INSERT INTO ' + MasterTable + '(ИНН, Имя, Адрес, Телефон) VALUES'+ '("' + IntToStr(j) + '", "'+Chr(Ord(i))+'иванов", "улица, дом", "(343)123-45-67")'; ADOCommand.CommandText := strCmdText; ADOCommand.Execute; Inc(j, 100000000000); end; end; procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction); begin // Освобождаем переменные if ADOConnection <> nil then begin ADOConnection.Connected := False; ADOConnection.Free; ADOConnection := nil; end; if ADOCommand <> nil then begin ADOCommand.Free; ADOCommand := nil; end; if ADODataSetMaster <> nil then begin ADODataSetMaster.Active := False; ADODataSetMaster := nil; end; if MasterDataSource <> nil then begin MasterDataSource.Free; MasterDataSource := nil; end; end; procedure TfmMain.btnSearchClick(Sender: TObject); begin DBGrid1.DataSource.DataSet.DisableControls; // Пример, поиск в таблице по полю [Имя], по известному началу строки ADODataSetMaster.Active := False; strCmdText := 'SELECT * FROM '+ MasterTable + ' WHERE [Имя] LIKE "'+ Edit1.Text + '%"'; ADODataSetMaster.CommandText := strCmdText; ADODataSetMaster.Active := True; DBGrid1.DataSource.DataSet.EnableControls; end; end. |