Пятница, 03.05.2024, 17:14
Приветствую Вас Гость
Меню сайта


Копилка для дальнейшего развития ресурса.
 
Форма входа
Интересное
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Программирование на Delphi.

Программирование

Главная » 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.

1-5 6-10 ... 36-40 41-45 46-48