Entwickler-Ecke

Sonstiges (Delphi) - Template selbst erstellen, nur nicht für Delphi sond...


R4id - Fr 31.07.09 13:21
Titel: Template selbst erstellen, nur nicht für Delphi sond...
Hallo...

Ich will ein Template für ein TEdit erstellen, damit meine ich folgendes:

Ich gebe 'alias' ein anschließend soll er im Edit 'alias "<name>" "<commands>"' anzeigen und dabei "<name>" selektieren, wenn Tab gedrückt wird soll er dann "<commands>" selektieren.

Folgenden Code hab ich schon, verfehlt aber das Ziel und dabei funktioniert auch die Aktion mit dem Tab-Button nicht:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
uses
  StrUtils;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  P1, P2: Integer;
begin
  if (Key = VK_TAB) then
  begin
    if (Pos('<', Edit1.Text) = 0or (Pos('>', Edit1.Text) = 0or (Pos('<', Edit1.Text) > Pos('>', Edit1.Text)) then
      Exit;

    P1 := Pos('<', Edit1.Text) - 1;
    P2 := PosEx('>', Edit1.Text, P1) - P1;

    Edit1.SelStart := P1;
    Edit1.SelLength := P2;
  end;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  iLen, P1, P2: Integer;
  sText: string;
begin
  iLen := Length(Edit1.Text);
  sText := Edit1.Text;

  if (iLen = 5and (sText = 'alias'then
  begin
    Edit1.Text := 'alias "<name>" "<command>"';

    P1 := Pos('<', Edit1.Text) - 1;
    P2 := PosEx('>', Edit1.Text, P1) - P1;

    Edit1.SelStart := P1;
    Edit1.SelLength := P2;
  end;
end;


Gruß


BenBE - Fr 31.07.09 14:30

Wenn Du Key selber behandelst, solltest Du die bearbeiteten Tasten mit Key := #0; abändern, damit Delphi diese nicht mehr bearbeitet.

Ferner zweifel ich ein wenig an deiner Index-Berechnung bei dem SelStart\SelLength. Ferner muss, damit das funktioniert KeyPreview der Form auf True stehen.


martin300 - Fr 31.07.09 14:44

Das fehlt noch zur Erkennung der Tabulator Taste.

http://www.delphi-forum.de/viewtopic.php?t=64326&highlight=tabulator+taste