Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос про DBGrid и Table. [D6, Paradox]


MakedoneZ ©   (2005-01-25 13:43:00) 

Если я создал Table и он отображается в DBGrid(Table создается во время выполнения программы его поля задаются FieldDefs..... итд) как мне задать ширину столбцов отображаемых в компоненте DBGrid,уже после динамического создания Table? Только DBGrid.Columns[n].Width:=x; x,n: Byte; не помогает.

Честно говоря в БД мало что понимаю,только начал изучать,так что не судите строго :) .

PS.БД - Paradox 7.


msguns   (2005-01-26 10:16:00) [1]

>MakedoneZ ©   (25.01.05 20:36) [6]

Обижаться не стоит. Подколка не оскорбление. Зачем было тупо (без обид) копировать в тред целый юнит, когда для ответа на вопрос достаточно было ввести лишь небольшие фрагменты ? Согласитесь, что далеко не каждый будет разбирать такие куски кода. Просто поставьте себя на месо отвечающих.


MakedoneZ   (2005-01-25 20:36:00) [2]

Johnmenспасибо вам,огромное,все получилось!

msgunsЕсли бы я знал ответ,я бы не задавал вопрос.
А то что вы знаете Delphi лучше,не значит что надо других подкалывать.


msguns   (2005-01-25 18:14:00) [3]

Блин, ну как в анекдоте:
Пришел дед сдавать анализ, ему спешащая медсестра и говорит:
- Видите, дедушка, баночку вон на той полочке ? Вот туда и ..
Возвращается через 5 минут: вся стена, шкаф и дверь об...ы, вонь стоит как в сортире
- Ты что, дедуган, в банку не попал ?
- Ды я ж, дочка, не снайпер тебе..

Надо было еще скриншоты выложить. Вместе с фотографией жены, детей, бабушек и дедушек ;))


Соловьев   (2005-01-25 17:44:00) [4]

>DBGrid.Columns[n].Width:=x; x,n: Byte; не помогает.
>Куда здесь вставить TfrmAddressBook.dbgAddress.Columns[3].Width ?

так не помогает или ты не знаешь где вставить?


Johnmen   (2005-01-25 17:38:00) [5]

>Куда здесь вставить

После Table.Active := True;

>Почему ,когда я ввожу

Потому, что не выполнен Post;


MakedoneZ   (2005-01-25 17:30:00) [6]

unit SourceCode;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls,
 Forms, Dialogs, StdCtrls, Grids, DBGrids, DbTables, Db;

type
 TfrmAddressBook = class(TForm)
   dbgAddress: TDBGrid;
   btnNewDB: TButton;
   btnLoad: TButton;
   sbxDB: TScrollBox;
   btnCloseDB: TButton;
   dlgOpen: TOpenDialog;
   dlgSave: TSaveDialog;
   procedure btnNewDBClick(Sender: TObject);
   procedure btnCloseDBClick(Sender: TObject);
   procedure btnLoadClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 frmAddressBook: TfrmAddressBook;
 Table:          TTable;
 DataSource:     TDataSource;

implementation

{$R *.DFM}

procedure TfrmAddressBook.btnNewDBClick(Sender: TObject);

begin
 if dlgSave.Execute then begin
   try
     Table := TTable.Create(Self);
     DataSource := TDataSource.Create(Self);

     Table.DatabaseName := '';
     Table.TableName := dlgSave.FileName;

     {Создание столбцов таблицы}
     Table.FieldDefs.Add('Фамилия', ftString, 30, False);
     Table.FieldDefs.Add('Имя', ftString, 30, False);
     Table.FieldDefs.Add('Адрес', ftString, 50, False);
     Table.FieldDefs.Add('Город', ftString, 20, False);
     Table.FieldDefs.Add('Штат', ftString, 20, False);
     Table.FieldDefs.Add('Zip_код', ftString, 10, False);
     Table.FieldDefs.Add('Телефон', ftString, 14, False);
     Table.FieldDefs.Add('Факс', ftString, 14, False);

     {Создание индекса для столбца Фамилия}
     Table.IndexDefs.Add('', 'Фамилия', [ixPrimary]);
     {Создание таблицы}
     Table.CreateTable;
     {Вывод таблицы на экран}
     DataSource.DataSet := Table;
     dbgAddress.DataSource := DataSource;
     Table.Active := True;
   except
     MessageDlg('Ошибка при создании таблицы', mtError, [mbOK], 0);
     Table.Free;
     DataSource.Free;
     Exit;
   end;

   {Затенение и активация кнопок}
   btnNewDB.Enabled := False;
   btnLoad.Enabled := False;
   btnCloseDB.Enabled := True;
 end
 else begin
   MessageDlg('Адресная книга не создана', mtInformation, [mbOK], 0);
 end;
end;

procedure TfrmAddressBook.btnCloseDBClick(Sender: TObject);

begin
 {Закрытие и освобождение ресурсов}
 Table.Close;
 Table.Free;
 DataSource.Free;

 {Затенение и активация кнопок}
 btnNewDB.Enabled := True;
 btnLoad.Enabled := True;
 btnCloseDB.Enabled := False;
end;

procedure TfrmAddressBook.btnLoadClick(Sender: TObject);

begin
 if dlgOpen.Execute then begin
   try
     Table := TTable.Create(Self);
     DataSource := TDataSource.Create(Self);

     Table.DatabaseName := '';
     Table.TableName := dlgOpen.FileName;

     {Вывод таблицы на экран}
     DataSource.DataSet := Table;
     dbgAddress.DataSource := DataSource;
     Table.Active := True;
   except
     MessageDlg('Ошибка при открытии таблицы', mtError, [mbOK], 0);
     Table.Free;
     DataSource.Free;
     Exit;
   end;

   {Активация и затенение кнопок}
   btnNewDB.Enabled := False;
   btnLoad.Enabled := False;
   btnCloseDB.Enabled := True;
 end
 else begin
   MessageDlg('Невозможно открыть адресную книгу', mtInformation,
                                             [mbOK], 0);
 end;
end;

end.

Куда здесь вставить TfrmAddressBook.dbgAddress.Columns[3].Width ?

Еще вопрос:
Почему ,когда я ввожу данные в поле,если потом не нажать "стрелку вниз",то данные этого поля не записываются в БД.


Соловьев   (2005-01-25 13:49:00) [7]

>DBGrid.Columns[n].Width:=x; x,n: Byte; не помогает.

код покажи


Наверх

Титульная страница Поиск, карта сайта Написать письмо