Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Markierter Text in TField (https://www.delphipraxis.net/21473-markierter-text-tfield.html)

Muetze1 1. Jun 2004 11:23

Re: Markierter Text in TField
 
Moin!

Sorry, die Nachricht heisst EM_REPLACESEL um die Selektion zu ersetzen. Nähere Info's dazu in der MSDN..

MfG
Muetze1

se0man 1. Jun 2004 13:15

Re: Markierter Text in TField
 
hey,
:thuimb:
thxxx !!

Genau das was ich benötigte!

...manche Probleme lösen sich ja fast von selbst :zwinker:

ciao
-se0man

se0man 1. Jun 2004 14:28

Re: Markierter Text in TField
 
:gruebel:
Jetzt noch eine kleine Frage:
Ist es nötig, den markierten Text mit '' zu ersetzen,
um ihn zu löschen, oder gibt es noch so etwas in der Richtung EM_DELETESEL,
(was es ja nicht gibt... :lol: )??


-se0man

se0man 1. Jun 2004 14:50

Re: Markierter Text in TField
 
Ich muss mich verbessern:

Es ist nämlich nicht nur 'nicht nötig',
sondern vielmehr 'nicht möglich' das mit EM_REPLACESEL
zu machen. Das verursacht eine AV. :wall:

Irgendwelche Ideen??

-se0man

se0man 1. Jun 2004 14:53

Re: Markierter Text in TField
 
OK, ich hab es:
Nennt sich WM_CLEAR.

thx, trotzdem.
-se0man

se0man 1. Jun 2004 15:01

Re: Markierter Text in TField
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz