예제 #1
0
void TABLE::tCut()

  {
  if(TABLE_ATTRIBUTES::AutoFill())
    return;

  DestroyAllEditControls();
  Copy();

  RUNTIMEINFO*  rtime = (RUNTIMEINFO*)AObjGetRuntimeInfo(theObject);
  ROW*          row = rtime->GetRow();
  row->DeleteSelectedRows();
  PostObjectChanged(CHANGED_NUMROWS);
  }
예제 #2
0
void TABLE::tPaste()

  {
  if(TABLE_ATTRIBUTES::AutoFill())
    return;

  BOOL  available = IsClipboardFormatAvailable(CF_TEXT);
  if(!available)
    return;

  DestroyAllEditControls();

  OpenClipboard(hParentWnd);
  HGLOBAL hClipboard = GetClipboardData(CF_TEXT);
  if(!hClipboard)
    {
    CloseClipboard();
    return;
    }

  HGLOBAL hCopy = GlobalAlloc(GHND, GlobalSize(hClipboard));
  if(!hCopy)
    {
    CloseClipboard();
    return;
    }

  char* copy = (char*)GlobalLock(hCopy);
  char* clip = (char*)GlobalLock(hClipboard);
  hmemcpy(copy, clip, GlobalSize(hClipboard));
  GlobalUnlock(hClipboard);
  CloseClipboard();

  RUNTIMEINFO*  rtime = (RUNTIMEINFO*)AObjGetRuntimeInfo(theObject);
  ROW*          row = rtime->GetRow();
  long          first = row->FirstSelection();
  char*         token = (char*)myStrtok((char huge*)copy);
  while(token)
    {
    row->AddRow(first, token, TABLE_ATTRIBUTES::NumColumns(), FALSE);
    token = (char*)myStrtok(NULL);
    first++;
    }
  GlobalUnlock(hCopy);
  GlobalFree(hCopy);

  row->DeleteSelectedRows();
  PostObjectChanged(CHANGED_NUMROWS);
  }