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

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

DBGridEh и копирование [D7]


fynjy1984 ©   (2005-02-03 08:52:00) 

При копировании строки из DBGridEh по CTRL+Ins и дальнейшей вставки (SHIFT+Ins) в другое место этой же таблицы все числовые значения вставляются нормально, а строковые не вставляются (остаются пустые поля), может кто знает как поправить.


jack128   (2005-02-03 09:09:00) [1]

Я руками все поля копировал:

procedure TBaseDBElementFrame.btnCopyClick(Sender: TObject);
begin
 if FValidCopyBookmark then
 begin
   IbDataSet.FreeBookmark(FCopyBookmark);
   FValidCopyBookmark := False;
 end;
 if not IbDataSet.Active then Exit;
 FCopyBookMark := IbDataSet.GetBookmark;
 FValidCopyBookmark := True;
 btnPaste.Enabled := True;
end;

procedure TBaseDBElementFrame.IBDataSetBeforeClose(DataSet: TDataSet);
begin
 if FValidCopyBookmark then
 begin
   IbDataSet.FreeBookmark(FCopyBookmark);
   FValidCopyBookmark := False;
 end;
end;

procedure TBaseDBElementFrame.btnPasteClick(Sender: TObject);
var
 Values: array of Variant;
 CurBookMark: TBookMark;
 i: Integer;
begin
 if FValidCopyBookmark then
 begin
   CurBookMark := IbDataSet.GetBookmark;
   IbDataSet.DisableControls;
   try
     IbDataSet.GotoBookmark(FCopyBookmark);
     SetLength(Values, IbDataSet.FieldCount);
     for i := 0 to Length(Values) - 1 do
       Values[i] := IbDataSet.Fields[i].Value;
     IbDataSet.GotoBookmark(CurBookmark);
   finally
     IbDataSet.EnableControls;
     IbDataSet.FreeBookmark(CurBookmark);
   end;
   if not (IbDataSet.State in dsEditModes) then
     IbDataSet.Append;
   for i := 0 to IbDataSet.FieldCount - 1 do
     if IbDataSet.Fields[i].FieldName <> 'ID' then
       IbDataSet.Fields[i].Value := Values[i];
 end;
end;


Наверх

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