Announcement

Collapse
No announcement yet.

TEdit und Select

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TEdit und Select

    Hallo

    Kann mir mal vielleicht etwas auf die Sprünge helfen. Ich versuch einer TEdit und dann in Folge einer TDBEdit Komponente folgendes Verhalten beizubringen.
    Während der Eingabe soll ein OnChange -Event aufgelöst werden und der Rechner über den eingegebenen Teil suchen gehen und das nächstgelegene Ergebniss hintendranhängen und markieren damit es gleich gelöscht wird wenn man weiterschreibt. So daß man sich langsam auf den gesuchten Begriff hinhantelt.

    Das nächste was ich versuche ist in einer TMemo Komponente das gerade eingebene Wort festzustellen (also immer das Wort) dann geh ich wieder suchen und komm zurück mit z.B. gleich einem ganzen Satz.

    Ich tüfftel und tüfftel aber eine brauchbare Lösung hab ich immer noch nicht.

    Für jeden Tipp dankbar

    Euer
    Peter

  • #2
    Hallo Peter,

    probier es mal so:

    procedure TForm1.Edit1Change(Sender: TObject);
    var t : string;
    s :integer;
    begin
    if Edit1.Tag = 0 then
    try
    Edit1.Tag := 1;
    t := Edit1.Text;
    s := Edit1.SelStart;
    if Length(t) > s then t := Copy(t,1,s);
    Edit1.Text := Complete(t);
    // Complete ist "irgendeine" Funktion zum Suchen und Vervollständigen
    Edit1.SelStart := s;
    finally
    Edit1.Tag := 0;
    end;
    end;

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if (Integer(Key) = vk_back) and (Edit1.SelStart > 0) then
    try
    Edit1.Tag := 1;
    Edit1.Text := Copy(Edit1.Text,1,Edit1.SelStart-1);
    Edit1.SelStart := Length(Edit1.Text);
    Key := #0;
    finally
    Edit1.Tag := 0;
    end;
    end

    Comment


    • #3
      Hallo Peter,

      jetzt noch einmal (hoffentlich lesbarer):

      <PRE>
      procedure TForm1.Edit1Change(Sender: TObject);
      var t : string;
      s :integer;
      begin
      if Edit1.Tag = 0 then
      try
      Edit1.Tag := 1;
      t := Edit1.Text;
      s := Edit1.SelStart;
      if Length(t) > s then t := Copy(t,1,s);
      Edit1.Text := Complete(t);
      // Complete ist "irgendeine" Funktion zum Suchen und Vervollständigen
      Edit1.SelStart := s;
      finally
      Edit1.Tag := 0;
      end;
      end;

      procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
      begin
      if (Integer(Key) = vk_back) and (Edit1.SelStart > 0) then
      try
      Edit1.Tag := 1;
      Edit1.Text := Copy(Edit1.Text,1,Edit1.SelStart-1);
      Edit1.SelStart := Length(Edit1.Text);
      Key := #0;
      finally
      Edit1.Tag := 0;
      end;
      end;
      </PRE&gt

      Comment


      • #4
        Super genau die Lösung schlecht hin,

        Danke funktioniert prima.

        LG
        Pete

        Comment

        Working...
        X