Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Combobox editieren verhindern (https://www.delphipraxis.net/143077-combobox-editieren-verhindern.html)

R2009 9. Nov 2009 14:48


Combobox editieren verhindern
 
Hi,

wir nutzen Comboboxen um bestimmte vorgegebene Eingaben realisieren zu können.
Läuft auch alles, bis ein Kunde (die stören doch eh nur den internen Ablauf) in das Textfeld seinen eigenen Senf eingetragen hat.

Meine Frage:
Wie kann ich verhindern, dass im Textfeld "herumeditiert" wird.
Im ersten Ansatz sieht das einfach aus... aber nach ein bisschen nachdenken.

Delphi-Quellcode:
procedure check_combo(t:Tobject);
var n:integer;e:boolean;
begin
  e:=false;
  For n:=1 to (t as tcombobox).items.count-1 do
    begin
      if (t as tcombobox).items.Strings[n]=(t as tcombobox).text then e:=true;
    end;
  if e=true then exit else (t as tcombobox).text:='';
end;
Wollte ich eigentlich in onchange einbinden.
Was meint ihr dazu kann man das eleganter lösen?
Grüsse
rainer

Luckie 9. Nov 2009 14:51

Re: Combobox editieren verhindern
 
Ändere die Stil-Eigenschaft (glaube ich) im Objektinspektor in csDropDown. Wenn es das nicht ist, etwas mit rumspielen. Ich bin mir da nicht ganz sicher.

R2009 9. Nov 2009 14:54

Re: Combobox editieren verhindern
 
Hi Luckie,
geil das ist es!
csDropDownList das ist die Lösung!

:wall:

Danke
Grüsse
Rainer

Luckie 9. Nov 2009 15:06

Re: Combobox editieren verhindern
 
Jepp, genau so heißt das Dingens, was ich meinte.

R2009 9. Nov 2009 15:09

Re: Combobox editieren verhindern
 
Hi,

zu früh gefreut!
Die Werte im Auswahlfeld (das in den der Kunde reieditiert hat) sind verschwunden.
Hatte bisher immer meine Werte per combobox1.text:= zugewiesen.
Das funktioniert nicht mehr. Textfeld bleibt leer.

Grüsse
Rainer

himitsu 9. Nov 2009 15:12

Re: Combobox editieren verhindern
 
Hier gilt ja nicht der Text, sondern die Liste ... also mußt du auch dem ItemIndex verwenden.

Delphi-Quellcode:
CB.ItemIndex := CB.Items.IndexOf(Text);

jfheins 9. Nov 2009 15:12

Re: Combobox editieren verhindern
 
Also der Style sollte bewirken, dass man nichts mehr selber eingeben kann, sondern nur noch aus der Liste wählen kann.

Oder setzt du den Inhalt im Code über die .Text Property und es klappt nicht? In diesem Fall würde ich den ItemIndex oder so setzen. Zur Not eben
Delphi-Quellcode:
ComboBox.ItemIndex := Combobox.Items.IndexOf('bla');

R2009 9. Nov 2009 15:20

Re: Combobox editieren verhindern
 
Hi,

ist viel einfacher:

im onkeypress Event
Key:=#0;

Grüsse
Rainer

himitsu 9. Nov 2009 16:27

Re: Combobox editieren verhindern
 
Das ist keine Lösung.
Hier gibt es einen passenden Style, dann muß man nicht erst versuchen das Verhalten eines anderen Styles so hinzubiegen, daß er so ähnlich arbeitet.

PS: Copy&Paste geht damit immernoch, also kann man immernoch was manuell eingeben.

Mithrandir 9. Nov 2009 16:53

Re: Combobox editieren verhindern
 
Sehe ich ähnlich. :?

Dann muss man halt mal in den sauren Apfel beißen und ein paar Dinge umstellen. Aber immerhin verhält sich die GUI dann auch so, wie es der Windows-Nutzer erwartet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz