AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Bei ComboBox Text-Aktualisierung bei Auswahl abfangen
Thema durchsuchen
Ansicht
Themen-Optionen

Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

Ein Thema von Popov · begonnen am 15. Mär 2012 · letzter Beitrag vom 16. Mär 2012
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

  Alt 15. Mär 2012, 08:09
Ist wahrscheinlich nur eine Kleinigkeit. Und zwar will ich in der ComboBox einen Eintrag auswählen, der ist aber letztendlich nur ein Alias für einen anderen Text. Wähle ich in der Liste zB. Apfel, soll ins Text-Feld Obst.

Das Ersetzen selbst ist in kein Problem, zuletzt aber wird das Feld Text dann doch noch von dem Item-String überschrieben.
  Mit Zitat antworten Zitat
Benutzerbild von Billa
Billa

Registriert seit: 11. Aug 2003
237 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

  Alt 15. Mär 2012, 08:16
Hallo, ich bin nicht sicher, ob ich Dein Anliegen richtig verstanden habe:
Du wählst mit Hilfe einer Combobox einen Eintrag und in ein anderes Textfeld soll z.B. die zugehörige Kategorie?
Oder ist die Kategorie ebenfalls in der Liste enthalten? Dann hilft ja vielleicht die Eigenschaft ".ItemIndex" weiter...
Aber offen gestanden fühlt sich das irgendwie falsch an. Wenn ich als Anwender etwas auswähle, erwarte ich nicht, dass danach etwas anderes dort steht. So etwas würde ich - falls notwendig - immer mit zwei Elementen machen. Eben die Liste der Elemente und ein Feld für die zugehörige Kategorie.
Gruß Billa

Nur weil ich paranoid bin, heißt das nicht, daß die da draussen nicht hinter mir her sind....

Geändert von Billa (15. Mär 2012 um 08:21 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

  Alt 15. Mär 2012, 14:06
Aber offen gestanden fühlt sich das irgendwie falsch an. Wenn ich als Anwender etwas auswähle, erwarte ich nicht, dass danach etwas anderes dort steht.
Oh je, jetzt kommt die Anwenderpsychologie ins Spiel. Wenn ich bei Windows auf den Starbutton klicke, erwarte ich nicht, dass ich damit Windows XP beenden kann? Hast Recht. Trotzdem hat es seine Richtigkeit.

Gut, ich liefere ein besseres (konstruiertes) Beispiel, vielleicht erkennt man dann den Sinn. Ich habe Edit-Komponente in die der Anwender ein Pfad eingeben kann. Soweit so gut. Jetzt bringe ich etwas Komfort ins Spiel und ersetzte die Edit-Komponente durch eine ComboBox, die hat auch ein Text-Feld. Jetzt kann der Anwender aber die Box aufklappen und da stehen Begriffe wie Desktop, Eigene Dateien, Eigene Bilder, usw. Wählt der Anwender Eigene Bilder aus, bekommt er, so ist es zumindest geplant, den Pfad zu dem Eigene Bilder Ordner in das ComboBox-Textfeld geschrieben. Ich glaube die Verwirrung würde sich in Grenzen halten. Also nichts wildes, nur dem Anwender ein wenig Tiparbeit abnehmen.

Allerdings, das Ganze hat jetzt länger gedauert als ich mir das vorgestellte habe, so dass ich das Ganze wohl über eine Edit-Komponente und PopUpMenü löse.

Trotz dem, auch wenn es jetzt nur noch informativ ist, würde es mich dennoch interessieren wie sowas geht.
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

  Alt 15. Mär 2012, 17:36
Ins onChange sowas wie

if ComboBox.text = 'Apfelthen ComboBox.text := 'Obst'; ?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

  Alt 15. Mär 2012, 18:40
Theoretisch ja. Ich hab das inzwischen über PopupMenü gelöst, somit ist es nicht mehr dringend. Interessant wäre es trotzdem zu wissen wie man es abfängt, denn in den jeweiligen Ereignissen habe ich es geändert, zuletzt wird es aber dennoch überschrieben.
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

  Alt 15. Mär 2012, 18:54
Ach Du willst das Item komplett austauschen, nicht nur den Anzeigetext solange es ausgewählt ist?
  Mit Zitat antworten Zitat
Benutzerbild von Billa
Billa

Registriert seit: 11. Aug 2003
237 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

  Alt 16. Mär 2012, 07:11
Gerade das Beispiel des Startbuttons zeigt, dass nicht jeden M... nachmachen sollte, nur um eventuell ein Bedienelement zu sparen. Ist nur eine ganz persönliche Haltung. Ein Kompromiss könnte sein, das Ergebnis der Auswahl schon mal beim Selektieren als Hint oder in der Statusleiste anzuzeigen.
Gruß Billa

Nur weil ich paranoid bin, heißt das nicht, daß die da draussen nicht hinter mir her sind....
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

  Alt 16. Mär 2012, 08:03
@Popov:
Soll/darf der Benutzer den Text ändern oder ist der nur zur Anzeige gedacht?

Wenn es nur ums Anzeigen geht, dann mit einer OwnerDraw-Combobox;

Delphi-Quellcode:
...
ComboBox1.Items.Add('Apfel=Obst');
ComboBox1.Items.Add('Kirsche=Obst');
ComboBox1.Items.Add('Paprika=Gemüse');
...

procedure TForm1.ComboBox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var combo:TComboBox;
    s :String;
begin
  combo:=TComboBox(Control);
  if (odComboBoxEdit in State) then
    s:=combo.Items.ValueFromIndex[Index]
  else
    s:=combo.Items.Names[Index];
  combo.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top, s);
  //if (odSelected in State) then combo.Canvas.DrawFocusRect(Rect);
end;
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

  Alt 16. Mär 2012, 12:09
Wenn die Anfangselemente static sind, weiß man doch meist den Index und kann das Element darüber einfach austausch im onChange?
Ich bin grade unterwegs und hab hier kein Delphi. Aber das müsste mit einer Zeile Code gehen...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.069 Beiträge
 
Delphi 12 Athens
 
#10

AW: Bei ComboBox Text-Aktualisierung bei Auswahl abfangen

  Alt 16. Mär 2012, 12:32
ComboBox1DrawItem?
Das würde ich als falschen Weg ansehn.

Der Anzeige-Text in die Items und dann entweder über ItemIndex den Wert bestimmen
oder über das Datenobjekt jedes Items ( cb.Objects[cb.ItemIndex] ) den internen Wert übergeben.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:13 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