Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 15
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование информационно-поисковой библиографической системы на gpss ...
Моделирование процесса передачи данных по магистрали с основным и резерв...
Создание последовательности окон и передвижение окон по экрану на Turbo ...

Создание базы данных в виде файла записей
Создать приложение с использованием многостраничного блокнота.
Форма должна содержать две страницы (рис. 5.17, 5.18): 1) TabSheet1
«Список всех записей»; 2) TabSheet2 – «Редактирование и поиск записей».
Вкладка Список всех записей
Рис. 5.17. Вкладка Список всех записей
Вкладка Редактирование и поиск записей
Рис. 5.18. Вкладка Редактирование и поиск записей
Расположите на 1-й странице компонент StringGrid, ширину и высоту
ячеек установите самостоятельно (не допускайте появления горизонталь-
ной полосы прокрутки). Фиксированный столбец в таблице удалите. Стра-
ницу «Редактирование и поиск записей» оформите с помощью компонен-
тов Label, Edit, ComboBox, Button, GroupBox в соответствии с рис. 5.18.
Добавьте на форму главное меню с командами в соответствии с рис. 5.17
(позже определим пункты Правка и О программе).
Рассмотрим пример базы данных для телефонного справочника. Опи-
шем глобальные переменные и типы данных программы: тип записи теле-
фонного справочника (info), файл записей (F), переменную типа info (r) и
целую переменную количества записей (n):
type
info=record {тип записей}
fam,im: string[20];
adr: string[100];
tel: string[15];
end;
var
PagesDlg: TPagesDlg; {Строка есть в заголовке модуля}
f: file of info; {Файл записей}
r: info; {Одна запись}
N: integer; {Количество записей}



Добавьте на форму два объекта: стандартные диалоги Windows для от-
крытия и сохранения файлов. Запрограммируйте процедуры открытия и
сохранения файлов базы данных (команды главного меню Прочитать из
файла и Записать в файл).
{процедура чтения из файла}
procedure TPagesDlg.N4Click(Sender: TObject);
var i: integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(F,OpenDialog1.FileName);
Reset(F);
N:=0;
while not eof(f) do
begin
read(F,r);
stringGrid1.Cells[0,N+1]:=r.fam;
stringGrid1.Cells[1,N+1]:=r.im;
stringGrid1.Cells[2,N+1]:=r.adr;
stringGrid1.Cells[3,N+1]:=r.tel;
N:=N+1 {увеличение числа записей на 1}
end;
closeFile(F);
NewEdit(ComboBox1);{процедура заполняет поля редак-
тирования второй страницы формы}
NewCombobox {процедура заполняет комбиниро-
ванный список второй страницы}
end
end;
{процедура сохранения информации в файл}
procedure TPagesDlg.N5Click(Sender: TObject);
var i:integer;
begin
if SaveDialog1.Execute then
begin
AssignFile(F,SaveDialog1.FileName);
Rewrite(F);
i:=1;
while stringGrid1.Cells[3,i]<>'' do
begin
r.fam:=stringGrid1.Cells[0,i];
r.im:=stringGrid1.Cells[1,i];
r.adr:=stringGrid1.Cells[2,i];
r.tel:=stringGrid1.Cells[3,i];
write(F,r);
i:=i+1
end;
closeFile(F)
end
end;



Напишите процедуру, задающую заголовки в таблице (шапку) при соз-
дании формы. В окне инспектора объектов активизируйте объект PagesDlg
(Окно формы с многостраничным блокнотом) и сгенерируйте событие
OnCreate (момент создания).
procedure TPagesDlg.FormCreate(Sender: TObject);
begin
stringGrid1.Cells[0,0]:='Фамилия';
stringGrid1.Cells[1,0]:='Имя';
stringGrid1.Cells[2,0]:='Адрес';
stringGrid1.Cells[3,0]:='Телефон';
ComboBox1.Items.Add('<'); {Создаем пустую строку в
комбинированном списке}
ComboBox1.ItemIndex:=0 {Активизируем эту строку на
случай создания нового справочника}
end;



Напишите процедуру заполнения полей редактирования NewEdit. Вы-
зов этой процедуры осуществляется в момент выбора фамилии для поиска,
то есть в момент смены активной строки в комбинированном списке. По-
этому для инициализации заготовки этой процедуры активизируйте собы-
тие OnChange (Момент замены) в инспекторе объектов для компонента
ComboBox и укажите название процедуры реакции на событие NewEdit.
Дважды щелкните мышью на введенном названии и заполните заготовку
этой процедуры следующим образом:
procedure TPagesDlg.NewEdit(Sender: TObject);
var i:integer; {номер строки данных в таблице}
begin
i:=ComboBox1.ItemIndex+1;
if i>0 then
begin {Для значащих позиций комбинированного списка
копируем данные i-записи с первой страницы фор-
мы в соответствующие поля на второй странице}
Edit1.Text:=StringGrid1.Cells[0,i];
Edit2.Text:=StringGrid1.Cells[1,i];
Edit3.Text:=StringGrid1.Cells[2,i];
Edit4.Text:=StringGrid1.Cells[3,i]
еnd
end;



Напишите процедуру заполнения комбинированного списка
NewComboBox. При описании типа класса (объекта) в разделе interface
добавьте декларацию procedure NewComboBox. В разделе implementation
добавьте описание этой процедуры:
procedure TPagesDlg.NewComboBox;
var i,j: integer;
begin
{Запоминаем активную позицию комбинированного списка}
j:=ComboBox1.ItemIndex;
ComboBox1.Clear; {очищаем список}
for i:=1 to n do
{Добавляем фамилии из первого столбца в обновленный список}
ComboBox1.Items.Add(StringGrid1.Cells[0,i]);
ComboBox1.ItemIndex:=j {Переходим на позицию j}
end;



Запрограммируйте команду меню «Сохранить изменения в списке за-
писей
»:
procedure TPagesDlg.N11Click(Sender: TObject);
var i:integer;
begin
i:=ComboBox1.ItemIndex+1; {Номер активной записи}
if PageControl1.ActivePage=TabSheet2 then
begin {если активная вторая страница}
StringGrid1.Cells[0,i]:=Edit1.Text;
StringGrid1.Cells[1,i]:=Edit2.Text;
StringGrid1.Cells[2,i]:=Edit3.Text;
StringGrid1.Cells[3,i]:=Edit4.Text
end
else NewEdit(ComboBox1); {иначе вносим изменения во 2-ю
страницу}
NewComboBox {Обновляем список}
end;



Запрограммируйте переход на предыдущую запись:
procedure TPagesDlg.Button5Click(Sender: TObject);
begin
if ComboBox1.ItemIndex=0
then ComboBox1.ItemIndex:=N-1
else ComboBox1.ItemIndex:=ComboBox1.ItemIndex-1;
NewEdit(ComboBox1) {Обновляем панель «Найдена запись»}
end;



Аналогично запрограммируйте кнопку Следующий. Запрограммируем
кнопку Удалить так, чтобы после нажатия на нее удалялись данные из
панели Найдена запись и из комбинированного списка.
Запрограммируйте кнопку Найти так, чтобы на панели Найдена запись
отображалась вся информация о выбранном элементе списка (для данного
примера о лице, фамилия которого указана в поле редактирования Edit5
Введите фамилию). Если по данному запросу ничего не обнаружено, то
выведите сообщение об этом.

Программа полностью [БД междугородних разговоров]:

Скриншот:
Д междугородних разговоров

Unit1.Pas
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, Grids, StdCtrls;

type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
MainMenu1: TMainMenu;
N1: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N2: TMenuItem;
N3: TMenuItem;
StringGrid1: TStringGrid;
ComboBox1: TComboBox;
GroupBox1: TGroupBox;
Edit5: TEdit;
Button1: TButton;
Button2: TButton;
StringGrid2: TStringGrid;
Button3: TButton;
N6: TMenuItem;
N7: TMenuItem;
Button4: TButton;
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Create_(Sender: TObject);
procedure NewEdit(Sender: TObject);
procedure NewComboBox;

procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure Button4Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;


type
info=record {тип записей}
num:string[3];
data,tel,city,time: string[20];
end;

var
//PagesDlg: TPagesDlg; {Строка есть в заголовке модуля}
f: file of info; {Файл записей}
r: info; {Одна запись}
N: integer; {Количество записей}
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.N2Click(Sender: TObject);
{процедура чтения из файла}
var i: integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(F,OpenDialog1.FileName);
Reset(F);
N:=0;
while not eof(f) do
begin
read(F,r);
stringGrid1.Cells[0,N+1]:=r.data;
stringGrid1.Cells[1,N+1]:=r.num;
stringGrid1.Cells[2,N+1]:=r.tel;
stringGrid1.Cells[3,N+1]:=r.city;
stringGrid1.Cells[4,N+1]:=r.time;
N:=N+1 {увеличение числа записей на 1}
end;
closeFile(F);
NewCombobox {процедура заполняет комбинированный список второй страницы}
end
end;

procedure TForm1.N3Click(Sender: TObject);
var i:integer;
begin
if SaveDialog1.Execute then
begin
AssignFile(F,SaveDialog1.FileName);
Rewrite(F);
i:=1;
while stringGrid1.Cells[3,i]<>'' do
begin
r.data:=stringGrid1.Cells[0,i];
r.num:=stringGrid1.Cells[1,i];
r.tel:=stringGrid1.Cells[2,i];
r.city:=stringGrid1.Cells[3,i];
r.time:=stringGrid1.Cells[4,i];
write(F,r);
i:=i+1
end;
closeFile(F)
end
end;

procedure TForm1.Create_(Sender: TObject);
begin
stringGrid1.Cells[0,0]:='Дата';
stringGrid1.Cells[1,0]:='Номер';
stringGrid1.Cells[2,0]:='Телефон';
stringGrid1.Cells[3,0]:='Город';
stringGrid1.Cells[4,0]:='Время';
stringGrid2.Cells[0,0]:='Дата';
stringGrid2.Cells[1,0]:='Номер';
stringGrid2.Cells[2,0]:='Телефон';
stringGrid2.Cells[3,0]:='Город';
stringGrid2.Cells[4,0]:='Время';
ComboBox1.Items.Add('<'); {Создаем пустую строку в комбинированном списке}
ComboBox1.ItemIndex:=0 {Активизируем эту строку на случай создания нового справочника}
end;

procedure TForm1.NewEdit(Sender: TObject);
var i,j,k:integer; {номер строки данных в таблице}
begin
k:=0;
for i:=0 to stringgrid2.RowCount-1 do
for j:=1 to stringgrid2.ColCount-1 do
stringgrid2.Cells[i,j]:='';

for i:=1 to N do
begin
if StringGrid1.Cells[3,i]=ComboBox1.Items[ComboBox1.ItemIndex]
then
begin
k:=k+1;
stringgrid2.Cells[0,k]:=stringgrid1.Cells[0,i];
stringgrid2.Cells[1,k]:=stringgrid1.Cells[1,i];
stringgrid2.Cells[2,k]:=stringgrid1.Cells[2,i];
stringgrid2.Cells[3,k]:=stringgrid1.Cells[3,i];
stringgrid2.Cells[4,k]:=stringgrid1.Cells[4,i];
end;

end;


end;

procedure Tform1.NewComboBox;
var i,j,k: integer; key:boolean;
begin
{Запоминаем активную позицию комбинированного списка}
j:=ComboBox1.ItemIndex;
ComboBox1.Clear; {очищаем список}
key:=true;
for i:=1 to n do
begin
for k:=0 to combobox1.Items.Count-1 do
if ComboBox1.Items[k]=StringGrid1.Cells[3,i] then
key:=false;

if key=true then ComboBox1.Items.Add(StringGrid1.Cells[3,i]);
key:=true;

end;

ComboBox1.ItemIndex:=j {Переходим на позицию j}
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if ComboBox1.ItemIndex=0
then ComboBox1.ItemIndex:=N-1
else ComboBox1.ItemIndex:=ComboBox1.ItemIndex-1;
NewEdit(ComboBox1) {Обновляем панель «Найдена запись»}
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if ComboBox1.ItemIndex=N-1
then ComboBox1.ItemIndex:=0
else ComboBox1.ItemIndex:=ComboBox1.ItemIndex+1;
NewEdit(ComboBox1) {Обновляем панель «Найдена запись»}
end;

procedure TForm1.Button3Click(Sender: TObject);
var i,j,k:integer; {номер строки данных в таблице}
begin
if Edit5.Text='' then begin showmessage('Введите строку для поиска');exit;end;
k:=0;
for i:=0 to stringgrid2.RowCount-1 do
for j:=1 to stringgrid2.ColCount-1 do
stringgrid2.Cells[i,j]:='';

for i:=1 to N do
begin
if StringGrid1.Cells[3,i]=Edit5.Text
then
begin
k:=k+1;
stringgrid2.Cells[0,k]:=stringgrid1.Cells[0,i];
stringgrid2.Cells[1,k]:=stringgrid1.Cells[1,i];
stringgrid2.Cells[2,k]:=stringgrid1.Cells[2,i];
stringgrid2.Cells[3,k]:=stringgrid1.Cells[3,i];
stringgrid2.Cells[4,k]:=stringgrid1.Cells[4,i];
end;

end;

if stringgrid2.Cells[0,1]='' then Showmessage('Ничего не найдено');
end;

procedure TForm1.N7Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button4Click(Sender: TObject);
var i,j:integer; s:string;
begin
s:=combobox1.Text;
for i:=0 to stringgrid2.RowCount-1 do
for j:=1 to stringgrid2.ColCount-1 do
stringgrid2.Cells[i,j]:='';
for i:=0 to Combobox1.Items.Count do
begin
if Combobox1.Items[i]=s then Combobox1.DeleteSelected;
end;

end;

end.




unit1.dfm


object Form1: TForm1
Left = 203
Top = 122
Width = 545
Height = 336
Caption = #1041#1044' '#1084#1077#1078#1076#1091#1075#1086#1088#1086#1076#1085#1080#1093' '#1088#1072#1079#1075#1086#1074#1086#1074
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
Menu = MainMenu1
OldCreateOrder = False
OnCreate = Create_
PixelsPerInch = 96
TextHeight = 13
object PageControl1: TPageControl
Left = 0
Top = 0
Width = 537
Height = 282
ActivePage = TabSheet1
Align = alClient
TabOrder = 0
object TabSheet1: TTabSheet
Caption = #1057#1087#1080#1089#1086#1082' '#1074#1089#1077#1093' '#1079#1072#1087#1080#1089#1077#1081
object StringGrid1: TStringGrid
Left = 0
Top = 0
Width = 529
Height = 254
Align = alClient
FixedCols = 0
RowCount = 20
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing]
TabOrder = 0
end
end
object TabSheet2: TTabSheet
Caption = #1055#1088#1086#1089#1084#1086#1090#1088' '#1087#1086' '#1075#1086#1088#1086#1076#1072#1084
ImageIndex = 1
OnShow = NewEdit
object ComboBox1: TComboBox
Left = 48
Top = 8
Width = 145
Height = 21
ItemHeight = 13
TabOrder = 0
Text = 'ComboBox1'
OnChange = NewEdit
end
object GroupBox1: TGroupBox
Left = 0
Top = 40
Width = 521
Height = 177
Caption = ' '#1053#1072#1081#1076#1077#1085#1085#1099#1077' '#1079#1072#1087#1080#1089#1080' '
TabOrder = 1
object StringGrid2: TStringGrid
Left = 2
Top = 15
Width = 517
Height = 160
Align = alClient
FixedCols = 0
TabOrder = 0
end
end
object Edit5: TEdit
Left = 232
Top = 8
Width = 121
Height = 21
TabOrder = 2
end
object Button1: TButton
Left = 0
Top = 224
Width = 75
Height = 25
Caption = #1055#1088#1077#1076#1099#1076#1091#1097#1080#1081
TabOrder = 3
OnClick = Button1Click
end
object Button2: TButton
Left = 80
Top = 224
Width = 75
Height = 25
Caption = #1057#1083#1077#1076#1091#1102#1097#1080#1081
TabOrder = 4
OnClick = Button2Click
end
object Button3: TButton
Left = 160
Top = 224
Width = 75
Height = 25
Caption = #1085#1072#1081#1090#1080
TabOrder = 5
OnClick = Button3Click
end
object Button4: TButton
Left = 248
Top = 224
Width = 75
Height = 25
Caption = #1059#1076#1072#1083#1080#1090#1100
TabOrder = 6
OnClick = Button4Click
end
end
end
object MainMenu1: TMainMenu
Left = 472
Top = 32
object N1: TMenuItem
Caption = #1060#1072#1081#1083
object N2: TMenuItem
Caption = #1055#1088#1086#1095#1080#1090#1072#1090#1100' '#1080#1079' '#1092#1072#1081#1083#1072
OnClick = N2Click
end
object N3: TMenuItem
Caption = #1047#1072#1087#1080#1089#1072#1090#1100' '#1074' '#1092#1072#1081#1083
OnClick = N3Click
end
object N6: TMenuItem
Caption = '-'
end
object N7: TMenuItem
Caption = #1042#1099#1093#1086#1076
OnClick = N7Click
end
end
end
object OpenDialog1: TOpenDialog
Left = 468
Top = 64
end
object SaveDialog1: TSaveDialog
Left = 476
Top = 104
end
end




Опубликовал Kest November 22 2009 21:51:02 · 0 Комментариев · 15310 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
начисление процен...
Популярные загрузки
Sztransppanel
Учебник для продв...
Дешифратор содерж...
Пишем программы и...
Drag&Drop
Encrypt Decrypt
Пример работы с б...
RSS Feeds
Карта сайта
PDF
Библиотека програ...
IconCut [Исходник...
Программирование ...
XPcontrol
DFileDeleter
Dnavigator
PHP/MySQL для нач...
Создание Web-сайт...

Топ загрузок
Приложение Клие... 100793
Delphi 7 Enterp... 98016
Converter AMR<-... 20298
GPSS World Stud... 17059
Borland C++Buil... 14239
Borland Delphi ... 10373
Turbo Pascal fo... 7390
Калькулятор [Ис... 6080
Visual Studio 2... 5228
Microsoft SQL S... 3674
Случайные статьи
службой File Repli...
Формат потока ввод...
Коридор колебания ...
Примечание Для про...
Добавить объект P...
Модуль Metainforma...
Ответственная игра...
ПАРАМЕТРИЗАЦИЯ В П...
Оригинальная реали...
Invalid qualifier
Функции-друзья класса
Однострочные функции
Игровые автоматы I...
Это предотвратит у...
зательно
Сайт онлайн-казино...
Деструктор
Работа с маршрутиз...
Что происходит пос...
Microsoft Internet...
Модули RPR
SMB-подпись гарант...
На протяжении всей...
Взлом Хотмыла
POD-типы
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?