AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ComboBox per Hand füllen

Ein Thema von lore · begonnen am 4. Jun 2008 · letzter Beitrag vom 1. Jul 2008
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
lore

Registriert seit: 2. Jun 2008
Ort: Norderstedt
29 Beiträge
 
#1

ComboBox per Hand füllen

  Alt 4. Jun 2008, 17:30
Frage zur ComboBox:

ich will drei Sachen zur Auswahl haben (soweit nicht schwer) und der User darf aber noch weiter Sachen dazu schreiben die dann automatisch mit aufgenommen werden. Geht das mit der Combobox oder muss ich da auch noch ein Edit-Feld verwenden?
Wenn ich versuche über den Items den neuen Text wieder mit ins DropDownMenü zu schreiben, funzt es nicht. Mir ist leider auch die Logik noch nicht so ganz klar, ob ich erst alles durchzählen muss dann einen dazuschreiben (CBox1.Items.count +1)...und ist das dann auch der selektierte....oder..??? Nachdem ich schon das halbe internet durchgelesen habe, stelle ich die Frage dann doch mal hier

Danke für die Antworten schonmal vorab,

Karsten

PS: habt's ihr 'ne Buchempfehlung dazu?

[edit=SirThornberry]Titel korrigiert - Mfg, SirThornberry[/edit]
Karsten
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: Combox per Hand füllen

  Alt 4. Jun 2008, 17:35
Ich habe hier eine ComboBox mit Style csDropDown. In deren OnKeyDown habe ich Folgendes:
Delphi-Quellcode:
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then
    begin
      if ComboBox1.Items.IndexOf(ComboBox1.Text) < 0 then
        ComboBox1.Items.Add(ComboBox1.Text);
    end;
end;
Meintest Du so etwas?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Combox per Hand füllen

  Alt 4. Jun 2008, 18:08
Zitat von lore:
PS: habt's ihr 'ne Buchempfehlung dazu?
Nein, aber wir haben DeddyH
Scherz beiseite: Darauf war ich noch gar nicht gekommen.

In solchen Situationen mache ich immer einen Knopf neben die Combo, der einen kleinen Listeneditor aufruft. Schließlich muß der Anwender Einträge ja auch wieder löschen können, z.B. wegen Tippfehlern oder so.
Mit dem DeddyH seiner Idee würde ein Löschknopf reichen

@DeddyH: Muss man danach noch ItemIndex setzen, oder selektiert sich der Eintrag dadurch quasi selber?
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

Re: Combox per Hand füllen

  Alt 4. Jun 2008, 18:10
Durch den Style csDropDown bleibt der String einfach stehen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Combox per Hand füllen

  Alt 4. Jun 2008, 18:14
Wenn man dann aber per Items[ItemIndex] darauf zugreifen will, ist kein Item ausgewählt, jedoch kann man den Code ohne weiteres noch durch eine Zeile erweitern:
Delphi-Quellcode:
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  with TComboBox(Sender) do
    if Key = VK_RETURN then
    begin
      if Items.IndexOf(Text) < 0 then
        Items.Add(Text);
      ItemIndex := Items.IndexOf(Text);
    end;
end;
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Combox per Hand füllen

  Alt 4. Jun 2008, 18:39
Hi,

ich kürz ihn mal wieder...

Delphi-Quellcode:
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  with TComboBox(Sender) do
    if Key = VK_RETURN then
      if Items.IndexOf(Text) < 0 then
        ItemIndex := Items.Add(Text);
end;
Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#7

Re: Combox per Hand füllen

  Alt 4. Jun 2008, 18:42
Übrigens, auch ein "Löschknopf" ist entbehrlich: Mit etwas Geschick benutzt man dazu einfach die Taste "Entf" auf der Tastatur - und schon ist der Eintrag aus der Liste weggezaubert. So funktioniert das z.B. auch in Outlook...
Ralph
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Combox per Hand füllen

  Alt 4. Jun 2008, 18:55
Die Entf-Taste benutzt man normalerweise zum editieren des Strings selber. Ich finde das nicht besonders intuitiv, die zum löschen von Listeneinträgen herzunehmen.
Oder was meinst du mit "etwas Geschick"?

PS: Outlook macht manchmal komische Sachen, deshalb nehme ich Thunderbird <g>
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#9

Re: Combox per Hand füllen

  Alt 4. Jun 2008, 19:07
Damit wollte ich vorsichtig andeuten, dass ich dafür ziemlich lange 'rumgefummelt habe bis es funktionierte.
Ralph
  Mit Zitat antworten Zitat
lore

Registriert seit: 2. Jun 2008
Ort: Norderstedt
29 Beiträge
 
#10

Re: ComboBox per Hand füllen

  Alt 4. Jun 2008, 20:26
Hi deddyH, und auch alle anderen.
Jo, genau das meinte ich, nur dass beim nächsten Start der Applikation der neue Eintrag wieder zur Verfügung stehen muss. Habe ich bspw. eine neuen Eintrag erstellt wie myTimeZone oder UT + 5, so muss ich das nachher wieder benutzen können. Wie also speichern? In der Ini wäre gut, da es aber dann immer mehr werden müsste der String in der INI iteriert werden, oder?

Frage: Wie macht man eine Schleife, die dann über ini.IniWritestring('Standort','Timezone[i]','??'); erstellt? Der eingetragen Wert "myTimeZone", "UT" oder was auch immer ins combobox1.text eingegeben wurde, muss dann in der INI stehen...und beim löschen auch wieder gelöscht werden.

http://www.deepskyobserver.de/downloads/comboBox.jpg


------------------------------------------------------------------------------------
btw. falls jemand mal über ein Maskedit Koordinaten einbauen will, hier die Lösung:

eigenschaft editMask: !99\°\ 99\'\ 99\";1;_ oder aber den Eintrag unter:

C:\Program Files\CodeGear\RAD Studio\5.0\bin\germany.DEM editieren und

"Koordinaten | 53° 44' 09" | !99\°\ 99\'\ 99\";1;_" reinkopieren
Karsten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz