Главная страница
    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.47 MB
Время: 0.038 c
3-1107125560
Solenko
2005-01-31 01:52
2005.02.27
Просмотр помеченных на удаление


14-1107932513
Vlad Oshin
2005-02-09 10:01
2005.02.27
а ля Задорнов. Просто...потому что достало...


14-1107443064
AndB
2005-02-03 18:04
2005.02.27
ICQ в приложениях


6-1103614493
Layner
2004-12-21 10:34
2005.02.27
Господа, подскажите, с помощью какого компанента INDY можно


1-1108275949
Вовик
2005-02-13 09:25
2005.02.27
Какие dll использует моя прога. Как их запускать из моей папки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский