Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: CL | DM;

Вниз

Вопрос про DBGrid и Table.   Найти похожие ветки 

 
MakedoneZ ©   (2005-01-25 13:43) [0]

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

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

PS.БД - Paradox 7.


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

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

код покажи


 
MakedoneZ ©   (2005-01-25 17:30) [2]

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 ?

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


 
Johnmen ©   (2005-01-25 17:38) [3]

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

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

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

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


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

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

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


 
msguns ©   (2005-01-25 18:14) [5]

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

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


 
MakedoneZ ©   (2005-01-25 20:36) [6]

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

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


 
msguns ©   (2005-01-26 10:16) [7]

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

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



Страницы: 1 вся ветка

Текущий архив: 2005.02.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.104 c
1-1108113834
Jay1982
2005-02-11 12:23
2005.02.27
Save Clipboard


1-1108207995
Девушка
2005-02-12 14:33
2005.02.27
Как правильнее сделать форматированный вывод?


6-1103490357
JaVa73
2004-12-20 00:05
2005.02.27
Оранизация web-форумов


1-1108462160
FaceToFace
2005-02-15 13:09
2005.02.27
TTreeNode


1-1107967914
alexa
2005-02-09 19:51
2005.02.27
Динамическое меню