HI und Guten Morgen.
(Delphi 6 Enterprise)
Mein Problem:
Wenn man in einem TEdit [strg] + [backspace] drückt kommt dort ja so ein nerviges Sonderzeichen anstelle der gewohnten Funktion.
(Wie es z.B. auch in einem TRichedit gemacht wird.)
Meine Lösung:
Delphi-Quellcode:
procedure TForm1.appmessage(
var Msg: TMsg;
var Handled: Boolean);
var i: integer;
begin
if msg.
message = wm_keyup
then
if msg.wParam = 17
then
strg_pressed := false;
if msg.
message = wm_KeyDown
then
begin
if msg.wParam = 17
then
strg_pressed := true;
if (strg_pressed)
and (msg.wparam = 8)
then
begin
if Form1.Active
then
begin
Input.Text := copy(Input.Text, 1, Backstepposition(Input.Text));
input.SelStart := length(input.Text);
end else
begin
i := 0;
while i < length(Whisperforms)
do
if Whisperforms[i].Formular.Active
then
begin
Whisperforms[i].Formular.Inputw.Text := copy(Whisperforms[i].Formular.Inputw.Text, 1,
Backstepposition(Whisperforms[i].Formular.Inputw.Text));
Whisperforms[i].Formular.Inputw.SelStart := length(Whisperforms[i].Formular.Inputw.Text);
i := length(WhisperForms);
end;
end;
Handled := true;
end;
end;
end;
function TForm1.BackstepPosition(StepText:
string): integer;
var i: integer;
begin
i := length(steptext) -1;
result := 0;
while i > -1
do
begin
if StepText[i] = '
'
then
begin
Result := i - 1;
i := 0;
end;
dec(i);
end;
end;
Und letzendlich meine Frage:
Da ich mit der Lösung nicht wirklich zu frieden bin, kennt ihr eine efektivere / bessere Variante?
Voraussetzung ist es ein TEdit zu verwenden.
mfg nic