Einzelnen Beitrag anzeigen

thepaine91

Registriert seit: 29. Okt 2009
Ort: Neckarsulm
36 Beiträge
 
Delphi 6 Enterprise
 
#1

[strg] + [backspace] (TEdit)

  Alt 8. Dez 2009, 09:35
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
  Mit Zitat antworten Zitat