Announcement

Collapse
No announcement yet.

ComboBox Eintrag löschen

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

  • ComboBox Eintrag löschen

    Hallo,

    ich habe in einem Programm eine ComboBox mittels ComboBox.Items.Add gefüllt.
    Gibt es eine Möglichkeit, einzelne Einträge zu löschen, indem man sie markiert und dann 'Entf' drückt (oder ähnlich)? Oder geht es nur über ComboBox.Items.Delete?

  • #2
    Du kannst im KeyDown - Event deiner Combobox mit
    if Key = (VK_DELETE) then
    Combobox.Items.Delete(Combobox.ItemIndex);
    den gerade ausgewählten Eintrag löschen

    Comment


    • #3
      Ich würde "KeyUp" bzw. "KeyPress" (wenn vorhanden) empfehlen. "KeyDown" besagt, meiner Meinung nach, dass die Taste gedrückt wurde und immer noch gedrückt ist. Bei "KeyUp" wurde sie auch wieder losgelassen.

      Mathias

      Comment


      • #4
        @ Andreas: meinst du, die ganze funktion "if...ItemIndex);" soll ich direkt im Objektinspektor in den KeyPress-event schreiben? das passt da nämlich nicht rein (benutze delphi 4) :-( <br>
        oder muß ich im quelltext eine prozedur "delete" oder so schreiben, in die ich das dann reinschreibe

        Comment


        • #5
          Hallo Matthias,
          Es ist im Grunde egal, ob du OnKeyDown, OnKeyPress oder OnKeyUp in diesem Fall verwendest, solange du keine Sondertasten oder den virtuellen Tastencode abfragen willst.

          OnKeyDown:
          In dieser Routine kann auf alle Tasten einschließlich Funktionstasten und Tastenkombinationen mit UMSCHALT-, ALT- und STRG-Taste sowie auf gedrückte Maustasten reagiert werden.

          OnKeyPress:
          Mit einer Ereignisbehandlungsroutine für OnKeyPress können bestimmte Aktionen durchgeführt werden, wenn eine einzelne Zeichentaste gedrückt wird.
          Da der Parameter Key den Datentyp Char hat, registriert das Ereignis OnKeyPress das ASCII-Zeichen der gedrückten Taste. Tasten, die keinem ASCII-Char-Wert entsprechen (z.B. UMSCHALT oder F1), generieren kein Ereignis OnKeyPress. Tastenkombinationen (z.B. UMSCHALT+A) führen nur zu einem Ereignis OnKeyPress (in diesem Beispiel ergibt UMSCHALT+A den Key-Wert „A“, wenn die Feststelltaste deaktiviert ist). Soll auf Nicht-ASCII-Tasten oder Tastenkombinationen reagiert werden, verwenden Sie die Ereignisbehandlungsroutine für OnKeyDown oder OnKeyUp.

          OnKeyUp:
          OnKeyUp ist praktisch das Gegenstück von OnKeyDown. Damit habe ich die Möglichkeit z.B. den Zeitraum zwischen Druck und Loslassen zu programmieren. Wir kennen das alle, wenn man den Finger zu lange auf der Taste lässt

          mfg Klaus-Pete

          Comment


          • #6
            So und jetzt der Code, der auch in D4 funktioniert.
            <pre>
            procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
            Shift: TShiftState);
            begin
            {Bitte beachten, dass die Eigenschaft "KeyPreview" der Form true sein muß.}
            if Key = VK_DELETE then ComboBox1.Items.Delete(Combobox1.ItemIndex);
            end;
            </pre>

            mfg Klaus-Pete

            Comment

            Working...
            X