Announcement

Collapse
No announcement yet.

AutoExpand für TComboBox

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

  • AutoExpand für TComboBox

    hallo,<p>
    an den kleinigkeiten sitzt' ich ewig - habe folgendes problemchen:
    in einer combobox stehen mehre strings oder auch längere ziffernfolgen,
    die der user nur mittels tastatur 'auswählen' soll.<br>
    beispiel:<br>
    in der combobox steht - band, bauch, buch, bleistift<br>
    durch user-eingabe b a u soll der bauch ausgewählt sein <br>
    leider habe ich noch keine möglichkeit gefunden, wie das zu realisieren ist.
    bin dankbar für jeden tip!!

  • #2
    Dazu kenne ich zwei Möglickeiten:<br>
    <br>
    1. Der Anwender drückt nach der Eingabe von b a u die Tastenkombination STRG+CURSOR UNTEN.<br>
    <br>
    2. Du verwendest die Freeware-Komponente ComboBoxPlus.<br&gt

    Comment


    • #3
      Hallo Cornelia,<br>
      <br>
      ich hätte noch eine dritte Möglichkeit beizusteuern.<br>
      Dazu habe ich ein Formular mit einer ComboBox und einem Button<br>
      benutzt.
      WICHTIG: Die Eigenschaft Sorted im Objekt Inspektor auf TRUE setzen.<br>
      <br>
      <br>
      Im Ereignis OnChange (ComboBox1Change) die Prüfung der Eingabe<br>
      (OnChange wird aufgerufen, wenn sich in ComboBox1.Text etwas ändert)<br>
      Im Ereignis OnExit (ComboBox1Exit) lasse ich die Auswahl anzeigen.<br>
      (OnExit wird aufgerufen, wenn das ComboBox1.Text Feld verlassen wird.<br>
      Deshalb auch der Button, sonst könnte ich das Feld nicht verlassen)<br>

      <pre>
      procedure TForm1.ComboBox1Change(Sender: TObject);

      Var
      lIndex : LongInt;
      lSaveStart : LongInt;
      sSaveText : String;

      begin
      // Merken wo der Cursor steht (SelStart fängt bei 0 an!)
      lSaveStart := ComboBox1.SelStart;
      // Den bisher eingegebenen Text merken
      sSaveText := Copy(ComboBox1.Text,1,ComboBox1.SelStart);
      // Die vorhandenen Einträge durchgehen (WICHTIG ComboBox1.Sorted = TRUE im Objectinspektor)
      for lIndex := 0 to ComboBox1.Items.Count-1 do
      Begin
      // Ist der eingegebene Text der Anfang eines Listeneintrages?
      if Pos(AnsiUpperCase(sSaveText),AnsiUpperCase(ComboBo x1.Items[lIndex])) = 1 then
      Begin
      // Da sortiert nächstbeste Möglichkeit gefunden
      ComboBox1.Text := ComboBox1.Items[lIndex];
      // Cursor wieder auf die aktuelle Stelle
      ComboBox1.SelStart := lSaveStart;
      // Schleife abbrechen, da ersten passenden Eintrag gefunden
      Break;
      end;
      end;
      end;

      procedure TForm1.ComboBox1Exit(Sender: TObject);
      begin
      ShowMessage(ComboBox1.Text+' ausgewählt');
      end;
      </pre>
      <br>
      Ciao<br>
      Chri

      Comment


      • #4
        vielen dank
        euch beiden - hab das problem gelöst

        Comment

        Working...
        X