AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Markierter Text in TField

Ein Thema von se0man · begonnen am 3. Mai 2004 · letzter Beitrag vom 1. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2      
se0man

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

Markierter Text in TField

  Alt 3. Mai 2004, 16:48
Hoi,

nach ewigem Searchen
entschied ich mich nun doch dafür,
eine hoffentlich nicht allzu blöde Frage
als Neues Thema zu 'eröffnen':

Wie kann ich auf den markierten Text
der in meinem DBGrid befindlichen
TField-Komponente zugreifen?

DBGrid.SelectedField.AsString &
DBGrid.SelectedField.Text
liefern mir unbefriedigenderweise
den gesamten Text des Feldes.

Thanx,

- se0man
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: Markierter Text in TField

  Alt 3. Mai 2004, 16:50
Hi!

Gibt es da sowas wie Seltext?

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
se0man

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

Re: Markierter Text in TField

  Alt 3. Mai 2004, 16:58
Ne, leider nicht.

- se0man
  Mit Zitat antworten Zitat
se0man

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

Re: Markierter Text in TField

  Alt 4. Mai 2004, 14:23
Es kann doch nicht sein,
dass das nicht möglich ist !?

Hat denn niemand eine Idee?
  Mit Zitat antworten Zitat
se0man

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

Re: Markierter Text in TField

  Alt 9. Mai 2004, 14:31
Wow!
Bin ich da also schon an die Grenzen von Delphi gestoßen...
  Mit Zitat antworten Zitat
se0man

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

Re: Markierter Text in TField

  Alt 23. Mai 2004, 18:15
So,
jetzt bin ich am Punkt meines Programmes angelangt,
an dem ich ohne die Lösung dieses Problems,
nicht weiter komme.
Habt ihr wirklich keine Hilfen??

Alles was ich will,
ist es auf den markierten Text meines DBGrids
(während sich die Zelle im Edit-Modus befindet)
zugreifen.

Das muss doch irgendwie zu bewerkstelligen sein.

Stellt euch vor, ihr steht vor diesem Problem.
Was würdet ihr machen??

Dankbar für jede Idee
-se0man
  Mit Zitat antworten Zitat
se0man

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

Re: Markierter Text in TField

  Alt 28. Mai 2004, 13:42
Habe in DF ne Antwort bekommen:
Code:
function GetStringGridOrDBGridSelText(Grid : TWinControl) : String;
var
  Wnd      : Cardinal;
  Buf      : String;
  SelStart : Cardinal;
  SelEnd   : Cardinal;
begin
  Wnd:=GetWindow(Grid.Handle,GW_CHILD);
  SendMessage(Wnd,EM_GETSEL,Integer(@SelStart),Integer(@SelEnd));
  SetLength(Buf,SendMessage(Wnd,WM_GETTEXTLENGTH,0,0)+1);
  SendMessage(Wnd,WM_GETTEXT,Length(Buf),Integer(@Buf[1]));
  Result:=Copy(Buf,SelStart+1,SelEnd-SelStart);
end;
Zitat:
Kannst ja mal die Delphi Hilfe zum Typ "Cardinal" aufrufen. Dann bekommst du eine Auflistung aller Typen und deren Gültigkeitsgrenzen.

Das Windows Betriebssystem stellt allen Win32 Programmen die sogenannte WinAPI zur Verfügung. Die WinAPI ist nichts anderes als eine riesige Sammlung von Befehlen (gepackt in verschiedene DLL Dateien).

Die Funktionalität der TMemo Komponente ist z.B. keine Erfindung von Borland. TMemo erlaubt den vereinfachten Zugriff auf das EditBox Feature der WinAPI. Wenn du also ein Memo in dein Programm einbaust, dann gehört das weisse Memo Feld eigentlich nicht dir oder Delphi sondern Windows. Das Fenster ist sozusagen nur geborgt. Deshalb kannst du darauf auch direkt zugreifen, ohne über das TMemo Interface von Delphi zu gehen. Die meisten solchen Komponenten haben ein "Handle" Property, welches du für den Zugriff über die WinAPI brauchst. Meistens geschieht der Zugriff über sogenannte Fensternachrichten (Window Messages) mit der SendMessage Funktion.

Um dein Problem zu lösen, habe ich zusert versucht, ein paar Messages wie WM_GETTEXT oder EM_GETSELTEXT an das DBGrid Control zu senden. Als das keinen Erfolg zeigte, hab ich das folgende Tool gestartet: http://kobik.videodot.net/spy_capture.asp

Es zeigt dir, aus welchen Controls ein Fenster aufgebaut ist und wie die Klassennamen heissen. Diese Namen kann man dann bei den WinAPI Funktionen FindWindow und FindWindowEx verwenden. Da die StringGrid und DBGrid Controls nur ein Child Window besitzen, gings auch ohne Klassennamen über GetWindow(Wnd,GW_CHILD).

Wenn du die Enterprise Version von Delphi hast, kannst du im Quelltext nachgucken, wie die Delphi Komponenten aufgebaut sind. Die StringGrid Komponente benutzt zum Editieren ein TInPlaceEdit Objekt was von TCustomMaskEdit abgeleitet ist welches wiederum von TCustomEdit abgeleitet ist. So sieht man auch schnell, welche Window Messages unterstützt werden.

Alle WinAPI Befehle sind auch in Delphi verwendbar, wenn die richtige Unit eingebunden ist. Die wichtigsten Befehle sind in der Unit "Windows" enthalten. Diese Befehle sind in der Delphi Help selber nicht enthalten, da sie nichts mit Borland zu tun haben, sondern von Microsoft kommen und in einer eigenen Help Datei beschrieben sind.

Bei meinem Delphi7 kann ich die WinAPI Help im Menu "Hilfe-Windows SDK" aufrufen.

Falls dein Kopf vor lauter obskuren Erklärungen schon etwas dröhnt, kannst du ja auch einfach etwas mit den WinAPI Befehlen herumspielen und mal gucken, was es denn so alles gibt. Nach einer Weile wird's dann viel klarer.

Das oben genannte Spy Programm ist sicher auch sehr hilfreich. Damit kann man auch Messages an andere Fenster abschicken, z.B. WM_DESTROY, WM_SHOW usw...
  Mit Zitat antworten Zitat
se0man

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

Re: Markierter Text in TField

  Alt 1. Jun 2004, 11:26
Meine Frage jetzt an alle Non-VCL Kids,
(auch an die anderen...):

Wie schaffe ich es nun,
einen kopierten Text an der aktuellen Cursor-Position (im Field)
einzufügen?

EM_GETSEL gibt mir ja je nach Position (0,1,2,3,...)
die seltsamen Werte 0,10001,20002,30003,... aus.
Aber hilft mir das weiter?
Ich wüsste nicht wie...


ciao
-se0man
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Markierter Text in TField

  Alt 1. Jun 2004, 11:35
Moin!

Entweder ein WM_SETTEXT oder WM_SETSELTEXT senden...

MfG
Muetze1
  Mit Zitat antworten Zitat
se0man

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

Re: Markierter Text in TField

  Alt 1. Jun 2004, 12:13
thx, für die schnelle Antwort,

WM_SETSELTEXT existiert leider nicht,
und WM_SETTEXT ersetzt ja den ganzen Text.
Oder gibt es bei zweiterem etwa die Möglichkeit,
eine Startposition anzugeben?

thx
-se0man
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz