Einzelnen Beitrag anzeigen

se0man

Registriert seit: 8. Mär 2004
51 Beiträge
 
#16

Re: Markierter Text in TField

  Alt 1. Jun 2004, 16:01
Nun, an dieser Stelle mach ich dann mal eine kleine Zusammenfassung,
dieses Threads, also Cut, Copy and Paste in einem Field.

Code:
procedure Tform1.Cut;
begin
  // markierten Text kopieren
  Clipboard.AsText := GetDBGridSelText;
  // markierten Text löschen
  SendMessage(GetWindow(DBGrid.Handle,GW_CHILD),WM_CLEAR,0,0);
end;

procedure Tform1.Copy;
begin
  // markierten Text kopieren
  Clipboard.AsText := GetDBGridSelText;
end;

procedure Tform1.Paste;
var
  cardinalClipbrdText: Cardinal;
begin
  // an aktueller Position einfügen
  cardinalClipbrdText := Cardinal(Clipboard.AsText); // kopierten Text als Cardinal in Variable
  SendMessage(GetWindow(DBGrid.Handle,GW_CHILD),EM_REPLACESEL,1,cardinalClipbrdText); // Text an aktueller Position ausgeben
end;

function Tform1.GetDBGridSelText: String;
var
  cardinalWnd,
  cardinalSelStart,
  cardinalSelEnd
    : Cardinal;
  strBuffer
    : String;
begin
  cardinalWnd := GetWindow(DBGrid.Handle,GW_CHILD);
  SendMessage(cardinalWnd,EM_GETSEL,Integer(@cardinalSelStart),Integer(@cardinalSelEnd));
  SetLength(strBuffer,SendMessage(cardinalWnd,WM_GETTEXTLENGTH,0,0)+1);
  SendMessage(cardinalWnd,WM_GETTEXT,Length(strBuffer),Integer(@strBuffer[1]));
  Result := Copy(strBuffer,cardinalSelStart+1,cardinalSelEnd-cardinalSelStart);
end;
thx
-se0man
  Mit Zitat antworten Zitat