32 Урока Borland Delphi



              

Урок 19 - часть 20


begin

Table1.First;

end;

В данной программе есть одна маленькая хитрость, которую Вы должны понять, если хотите узнать, как работает программа. Так как есть пять отдельных редакторов TEdit на главной форме, то хотелось бы иметь некоторый способ обращаться к ним быстро и легко. Один простой способ состоит в том, чтобы объявить массив редакторов:

Edits: array[1..5] of TEdit;

Чтобы заполнить массив, Вы можете в событии OnCreate главной формы написать:

procedure TForm1.FormCreate(Sender: TObject);

var

i: Integer;

begin

for i := 1 to 5 do

Edits[i] := TEdit(FindComponent('Edit' + IntToStr(i)));

Table1.Open;

end;

Код показанный здесь предполагает, что первый редактор, который Вы будете использовать назовем Edit1, второй Edit2, и т.д. Существование этого массива позволяет очень просто использовать событие OnDataChange, чтобы синхронизировать содержание объектов TEdit с содержимом текущей записи в DataSet:

procedure TForm1.DataSource1DataChange(Sender: TObject;

Field: TField);

var

i: Integer;

begin

for i := 1 to 5 do

Edits[i].Text := Table1.Fields[i - 1].AsString;

end;

Всякий раз, когда вызывается Table1.Next, или любой другой из навигационных методов, то будет вызвана процедура показанная выше. Это обеспечивает то, что все редакторы всегда содержат данные из текущей записи.

Всякий раз, когда вызывается Post, нужно выполнить противоположное действие, то есть взять информацию из редакторов и поместить ее в текущую запись. Выполнить это действие, проще всего в обработчике события TDataSource.OnUpdateData, которое происходит всякий раз, когда вызывается Post:

procedure TForm1.DataSource1UpdateData(Sender: TObject);

var

i: Integer;

begin

for i := 1 to 5 do

Table1.Fields[i - 1].AsString := Edits[i].Text;

end;

Программа будет автоматически переключатся в режим редактирования каждый раз, когда Вы вводите что-либо в одном из редакторов. Это делается в обработчике события OnKeyDown (укажите этот обработчик ко всем редакторам):

procedure TForm1.Edit1KeyDown(Sender: TObject;

var Key: Word; Shift: TShiftState);




Содержание  Назад  Вперед