Registriert seit: 8. Mär 2004
51 Beiträge
|
Re: Markierter Text in TField
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
|
|
Zitat
|