Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [Synedit] markierten text bei Tab nicht löschen (https://www.delphipraxis.net/53510-%5Bsynedit%5D-markierten-text-bei-tab-nicht-loeschen.html)

n0b0dy 18. Sep 2005 00:28


[Synedit] markierten text bei Tab nicht löschen
 
huhu ihr alle :hi:

habe mal ne kleine frage:
undzwar möchte ich im Synedit auf die Tab-Taste reagieren. Also wenn ein Text markiert ist, und jemand klickt auf Tab soll zB eine Message erscheinen. habe das im OnKeyPress gemacht.

Delphi-Quellcode:
 if (Key = vk_Tab) and (Synedit.SelLength > 0) then
  ShowMessage('huhu DP');
das problem ist aber, das nach anzeige der Message der markierte Text gelöscht wird... bzw mit einem Tab überschrieben.... wie das halt nun mal überall so ist.

Wie kann ich das denn verhindern? :?:

zecke 18. Sep 2005 02:32

Re: [Synedit] markierten text bei Tab nicht löschen
 
Das weiss der Wind :mrgreen:

Ich würde speichern, was markiert ist und nach dem TAB-drücken wieder reinschreiben (Am Ende wieder das Gleiche markieren). Vor dem Reinschreiben halt Showmessage oder GiveMassage ;).

PS: Ich drüfte nun bekannt sein für schlechte, aber funktionierende Lösungen :mrgreen: (das liegt wohl an meinem Wissensstand bei Delphi, der nur geringfügig über den eine Kartoffel hinausragt :stupid: )

edit: Ich weiß allerdings nicht ob das so funktionieren könnte (kann im moment nicht testen), aber vielleicht hilft es ja.

Sharky 18. Sep 2005 07:17

Re: [Synedit] markierten text bei Tab nicht löschen
 
Hai l0b0dy,
Zitat:

Zitat von n0b0dy
Wie kann ich das denn verhindern?

Du hast einen kleinen (denk)fehler in deinem Code ;-)
Nach dem abarbeiten der OnKeyPress/OnKeyDown Methoden wird die gedrückte Taste trotzdem von dem Control verarbeitet. Bei dir bedeutet dies:
  • Aufrufen deiner OnKeyPress-Methode
  • Diese abarbeiten
  • Das Char welches in der Variablen Key steht an das Controll übergeben
  • Das Controll arbeitet weiter

Du musst also nur den Wert für Key ändern nachdem Du deine IF-Abfrage gemacht hast:

Delphi-Quellcode:
procedure TForm1.SynEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = Char(Vk_Tab)) and (Synedit1.SelLength > 0) then
  begin
    ShowMessage('huhu DP');
    Key := #0;
  end;
end;

n0b0dy 18. Sep 2005 10:55

Re: [Synedit] markierten text bei Tab nicht löschen
 
ach Sharky,

natürlich!!! hab das total vergessen. :mrgreen:

n0b0dy 18. Sep 2005 11:17

Re: [Synedit] markierten text bei Tab nicht löschen
 
hm

also irgendwie passiert nun überhauptnichts, wenn ich was markiert habe und auf Tab klicke...

Scheinbar wird garnicht auf

Delphi-Quellcode:
if Key = Char(VK_TAB) then
reagiert. denn wenn ich dsa alleine stelle und auf Tab drücke passiert ebenso nichts...

Was ist denn falsch? Bzw mach ich was falsch?

Also in OnKeypress und dann dieser Code oder? :?

Sharky 18. Sep 2005 11:46

Re: [Synedit] markierten text bei Tab nicht löschen
 
Hai n0b0dy,

hast Du bei deinem SynEdit auch .WantTabs := True; eingestellt? :stupid:

n0b0dy 18. Sep 2005 12:02

Re: [Synedit] markierten text bei Tab nicht löschen
 
joa hab ich.
geht nicht wenn an oder wenns aus ist...

n0b0dy 18. Sep 2005 12:05

Re: [Synedit] markierten text bei Tab nicht löschen
 
habe soeben festgestelllt, dass das OnKeyPress überhaupt nicht ausgelöst wird, wenn man Tab drückt. habe mal spaßeshalber showmessage(key) reingeschrieben. funzt auch nicht...

wie wäre es denn mit .Keystrokes? Weiß aber nicht wie ich da was anwenden soll :?

[EDIT]
Habe nun herausgefunden wenn man bei .Keystrokes den Eintrag mit ecTab löscht, funzt das einwandfrei. mal schaun wie man sich das nun zu nutze machen kann ;) wenns net klappt meld ich mich wieder :D


Ciao

n0b0dy 18. Sep 2005 12:33

Re: [Synedit] markierten text bei Tab nicht löschen
 
also hab bissle rumprobiert, aber eigetnlcih keine möglichkeit gefunden. :( denn man muss, damit es funktioniert diesen einen Keystroke entfernen. aber ich möchte den ja verwenden, nur nicht, wenn ein Text markiert ist...

Also kennt sich damit jmd. anderes besser aus? :gruebel:

Oder bin ich mit diesen .keystrokes auf nem völlig falschen weg? :?

Sharky 18. Sep 2005 14:40

Re: [Synedit] markierten text bei Tab nicht löschen
 
Zitat:

Zitat von n0b0dy
... Oder bin ich mit diesen .keystrokes auf nem völlig falschen weg? :?

Wie? Was? Keystrokes? Was machst Du denn mit denen in diesem Fall? Die brauchen dich doch überhaupt nicht zu kümmern.
Einfach den Code von mir in das .OnKeyPress, WantTabs auf True und fertig ist der Lack.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.
Seite 1 von 2  1 2      

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