AGB  ·  Datenschutz  ·  Impressum  







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

InplaceEdit in Databound Grid

Ein Thema von Gremlin · begonnen am 21. Feb 2018 · letzter Beitrag vom 23. Feb 2018
Antwort Antwort
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
177 Beiträge
 
Delphi 7 Enterprise
 
#1

InplaceEdit in Databound Grid

  Alt 21. Feb 2018, 08:34
Delphi-Version: 7
Hallöchen,


vielleicht kann mir jemand zu diesem Problem helfen?

Ich habe hier einen abgeleiteten Databound Grid, mit zusätzlichem abgeleiteten TInplaceEdit. Leider ist es im InplaceEdit nicht möglich, wenn sich der Grid im dauerhaften Bearbeitungsmodus befindet, die Zelleninhalte über die Tastaturkombinationen SHIFT+<VK_LEFT><VK_RIGHT>, resp. CTRL+SHIFT+<VK_LEFT><VK_RIGHT> zu markieren, da diese im originalen TInplaceEdit des Databound Grid nicht, anders oder fehlerhaft implementiert sind. Daher bin ich auf die Idee gekommen, dieses Verhalten zu ermöglichen, in dem ich einfach die KeyDown-Methode des abegeleiteten TInplaceEdit überschreibe und selbst auf diese Keycodes reagiere.

Leider klappt dies nicht zu 100%, da ich nicht herausfinden kann, in welcher Richtung (nach links oder rechts) die Markierung des TInplaceEdit erstellt wurde (SelStart und SelLength enthalten dann immer die gleichen Werte). Die Markierung des Textes wäre in beiden Fällen unterschiedlich und kann mit jedem TEdit nachvollzogen werden.

Beispiel:

abcde 1234 9999

ist der Bereich "34_99" von links nach rechts markiert, dann selektiert ein CTRL-SHIFT-LEFT "34_" und CTRL-SHIFT-RIGHT "34_9999"
ist der Bereich "34_99" von rechts nach links markiert, dann selektiert ein CTRL-SHIFT-LEFT "1234_99" und CTRL-SHIFT-RIGHT "99"


Kann mir bitte jemand weiterhelfen?

Vielen Dank
Gruss Gremlin
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
177 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: InplaceEdit in Databound Grid

  Alt 23. Feb 2018, 09:30
ich habe die Lösung in der Zwischenzeit selbst herausgefunden.

Wenn es interessiert:

Nach dem Zwischenspeichern der aktuellen SelStart und SelLength-Angaben, kann über diese Message die Selektion gelöscht werden und anschließend die Position des Cursors ermittelt werden.


Code:
[...]
SendMessage(Handle, EM_GETSEL, LongInt(@StartPos), LongInt(@EndPos));
SendMessage(Handle, EM_SETSEL, -1, 0);
SendMessage(Handle, EM_GETSEL, LongInt(@CurPos), 0);
SendMessage(Handle, EM_SETSEL, StartPos, EndPos);
[...]
Gruss Gremlin
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:28 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