Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание форм для строк в DB Grid  (Прочитано 8294 раз)
0 Пользователей и 1 Гость смотрят эту тему.
valeria15
Интересующийся

ru
Offline Offline
Пол: Женский

« : 22-08-2011 12:06 » 

Помогите пожалйуста! Я только начала изучать Delphi в институте и много еще не знаю.  У меня маленькая база данных где отображены фамилия и имя в компоненте DBGrid. Есть панель DBNavigator, сделала поиск.  Тут все работает, добавляет, удаляет и так далее. Вот я хочу, чтобы при нажатии на какую - либо фамилию в DBGride открывалась форма с полной информацией о данном человеке. Как мне это сделать? Вот код программы:

Код: (Delphi)
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBClient, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls,
  ComCtrls;

type
  TForm1 = class(TForm)
    DBNavigator1: TDBNavigator;
    DataSource1: TDataSource;
    ClientDataSet1: TClientDataSet;
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    DBGrid1: TDBGrid;
    procedure Button1Click(Sender: TObject);
    procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
 
  private

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if not ClientDataSet1.Locate(
    'Фамилия;Имя',
    VarArrayOf([Edit1.Text,Edit2.Text]),
   [loCaseInsensitive, loPartialKey])then
    ShowMessage('Запись не найдена');
end;



procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
 if gdFocused in State then
   with (Sender as TDBGrid).Canvas do
   begin
     Brush.Color := clFuchsia;
     FillRect(Rect);
     TextOut(Rect.Left, Rect.Top, Field.AsString);
   end;
end;

end.
« Последнее редактирование: 22-08-2011 12:35 от RXL » Записан
zubr
Гость
« Ответ #1 : 22-08-2011 14:41 » new

ClientDataSet1.Fields.FieldByName('Фамилия').AsString
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #2 : 22-08-2011 16:05 » 

1. Создать новую форму, fmDialog, скажем, где будет отображаться "полная информация"
2. Создать модуль данных (DataModule), и перенести туда набор данных (ClientDataSet) и источник данных (TDataSource)
3. В главной форме (пусть будет fmMain) добавить в uses модуль данных и настроить грид на источник данных из модуля данных
4. В дочерней форме также добавить в uses модуль данных, накидать дб-контролы (TDBEdit, например), и настроить их на соответствующие поля ClientDataSet
5. В обработчике двойного клика на гриде добавить ShowModal дочерней формы.

остальное - как бы частности.
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines