Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi combobox enabled (https://www.delphipraxis.net/40407-combobox-enabled.html)

herrentor 15. Feb 2005 13:14


combobox enabled
 
moin nochmal,

ich möchte bei einem häckchen in einer checkbox, eine combobox auf enabled=false stellen, dies aber erst wenn man in combobox2 eine auswahl trifft. danke im voraus.

so in etwa hatte ich mir das gedacht, aber das geht so natürlich nicht:

Delphi-Quellcode:

if checkbox.checked=true then
schichtbuch.comboboxChange(schichtbuch.combobox2).enabled:=false;

Binärbaum 15. Feb 2005 13:20

Re: combobox enabled
 
Wenn ich dein Problem richtig verstanden habe, dann kann man das im OnClick der CheckBox regeln:
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 if CheckBox1.Checked then ComboBox1.Enabled:= False;
end;
MfG
Binärbaum

Sharky 15. Feb 2005 13:23

Re: combobox enabled
 
Hai herrntor,

evnentuell so:
Delphi-Quellcode:
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
  ComboBox1.Enabled := not ((ComboBox2.Text <> '') AND (CheckBox1.Checked))
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  ComboBox1.Enabled := not ((ComboBox2.Text <> '') AND (CheckBox1.Checked))
end;

herrentor 15. Feb 2005 13:26

Re: combobox enabled
 
die combobox1 soll nur enabled=false wenn man eine auswahl in combobox2 trifft.

@Sharky: gute idee, werd ich gleich mal versuchen

Neutral General 15. Feb 2005 13:26

Re: combobox enabled
 
Zitat:

Zitat von Sharky
Hai herrntor,

evnentuell so:
Delphi-Quellcode:
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
  ComboBox1.Enabled := not ((ComboBox2.Text <> '') AND (CheckBox1.Checked))
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  ComboBox1.Enabled := not ((ComboBox2.Text <> '') AND (CheckBox1.Checked))
end;

Dazu hätte ich mal eine Frage : Ich habe "not" und "and" bis jetzt eigentlich nur in Abfragen benutzt.
Was bewirken sie denn in diesem Fall ?

herrentor 15. Feb 2005 13:31

Re: combobox enabled
 
aber woher weiß man ob enabled true oder false ist. das muss da doch noch rein, oder nicht?

Binärbaum 15. Feb 2005 13:34

Re: combobox enabled
 
Zitat:

Zitat von Neutral General
...
Dazu hätte ich mal eine Frage : Ich habe "not" und "and" bis jetzt eigentlich nur in Abfragen benutzt.
Was bewirken sie denn in diesem Fall ?

Da Enabled ein Boolean ist, also der selbe Typ wie bei (if-)Abfragen, kann man hier auch die boolschen Operatoren not und and anwenden.
Zur Wirkung:
Delphi-Quellcode:
(ComboBox2.Text <> '') AND (CheckBox1.Checked)
ergibt True, wenn in CheckBox1 ein Haken gesetzt wurde und der Text von ComboBox2 nicht leer ist (d.h. es wurde etwas ausgewählt). Das not sorgt nur noch dafür, das der Wert negiert wird (d.h. True wird zu False und umgekehrt).

MfG
Binärbaum

Sharky 15. Feb 2005 13:34

Re: combobox enabled
 
Zitat:

Zitat von Neutral General
...Dazu hätte ich mal eine Frage ...

[Delphi-Grundlagen = ON] *g*

Das Property .Enabled ist eine Boolvariable. Es kann ihr also True oder False zugewiesen werden.
Der Ausdrug (1=1) wird vom als Boolcheoperation gewertet und gibt True zurück wenn die Bedingung erfüllt ist. Ansonsten False.

Ergo ergibt
Delphi-Quellcode:
((ComboBox2.Text <> '') AND (CheckBox1.Checked))
True wenn in der Combobox2 ein Text steht und die Checkbox1 "gechecked" ist. Da es für diese Anforderung aber umgedreht sein soll wird das Ergebniss der Boolchenoperation mit NOT negiert.

Anderes Beispiel:
Delphi-Quellcode:
var
  a : Integer;
  b : String;
begin
  Irgendwass.Enabled := ((a=1) OR (a=7)) AND (b = 'blubb');
end;
auch hier steht rechts vom := eine einfache Boolcheoperation.

Matze 15. Feb 2005 13:35

Re: combobox enabled
 
@Neutral General:

Delphi-Quellcode:
ComboBox1.Enabled := not ((ComboBox2.Text <> '') AND (CheckBox1.Checked))
Hier wird die Checkbox enabled, wenn Die CheckBox nicht Leer ist und die CheckBox gecheckt ist.

Also wenn die Ereignisse in Klammern nicht beide zutreffen.


Edit: Zu langsam und unausführlich ^^

Neutral General 15. Feb 2005 13:39

Re: combobox enabled
 
@ Sharky : Oh man.. Ich kann doch Delphi :roll: :mrgreen:

Ich hab nur nicht gewusst das man das so schreiben kann :

Delphi-Quellcode:
ComboBox1.Enabled := not ((ComboBox2.Text <> '') AND (CheckBox1.Checked))
Ich hätte geschrieben :

Delphi-Quellcode:
if (ComboBox2.Text <> '') and (Checkbox1.Checked) then
Combobox1.Enabled := false
else
Checkbox1.Enabled := true;
Die Schreibweise war mir nur neu. :wink:

Matze 15. Feb 2005 13:41

Re: combobox enabled
 
Da es sich beides mal um boolsche Werte handelt, kann man das auch schön kurz schreiben, wie es Sharky demonstriert hat.

Nachtrag: Selbst so etwas würde gehen:
Delphi-Quellcode:
  i := 5;
  CheckBox1.Checked := i = 5; //gecheckt

herrentor 15. Feb 2005 13:45

Re: combobox enabled
 
die sache ist jetzt bloß, dass sich die checkbox auf einem anderen formular als die comboboxen befindet. das würde doch bedeuten, dass ich mit sendern arbeiten muss, oder wie bekommt sonst das formular mit den comboboxen gesagt ob ein häckchen drin ist.

Sharky 15. Feb 2005 13:48

Re: combobox enabled
 
Zitat:

Zitat von herrentor
die sache ist jetzt bloß, dass sich die checkbox auf einem anderen formular als die comboboxen befindet.

Dann versuche es mal so:
Code:
ComboBox1.Enabled := not ((ComboBox2.Text <> '') AND ([b]Name_der_Form.[/b]CheckBox1.Checked))

Neutral General 15. Feb 2005 13:48

Re: combobox enabled
 
Zitat:

Zitat von Sharky
[Delphi-Grundlagen = ON] *g*

Das Property .Enabled ist eine Boolvariable. Es kann ihr also True oder False zugewiesen werden.
Der Ausdrug (1=1) wird vom als Boolcheoperation gewertet und gibt True zurück wenn die Bedingung erfüllt ist. Ansonsten False.

Ergo ergibt
Delphi-Quellcode:
((ComboBox2.Text <> '') AND (CheckBox1.Checked))
True wenn in der Combobox2 ein Text steht und die Checkbox1 "gechecked" ist. Da es für diese Anforderung aber umgedreht sein soll wird das Ergebniss der Boolchenoperation mit NOT negiert.

Das war mir ja alles klar ich weis ja was Boolsche Variablen :roll:
Ich komm mir vor als hätte ich vor 5 min mein "Hallo Welt" Programm geschrieben :roll: :mrgreen:

@ Matze : das sowas :

Delphi-Quellcode:
i := 5;
CheckBox1.Checked := i = 5; //gecheckt
geht ist mir aber absolut neu :mrgreen:
Aber ich glaube das ist auch nicht sooo bekannt oder ?
Na gut... nochwas gelernt ^^

Matze 15. Feb 2005 13:49

Re: combobox enabled
 
Zitat:

Zitat von Neutral General
geht ist mir aber absolut neu :mrgreen:
Aber ich glaube das ist auch nicht sooo bekannt oder ?

Hab's spaßeshalber nur getestet und es ging. ;)

Aber praktisch ist das schon.

Irgendwie sind wir weit neben dem eigentlichen Thema.

Thanatos81 15. Feb 2005 13:53

Re: combobox enabled
 
Zitat:

Zitat von Neutral General

@ Matze : das sowas :

Delphi-Quellcode:
i := 5;
CheckBox1.Checked := i = 5; //gecheckt
geht ist mir aber absolut neu :mrgreen:
Aber ich glaube das ist auch nicht sooo bekannt oder ?
Na gut... nochwas gelernt ^^

Das ist mir zwar nicht neu (gehöre ich jetzt zu den Auserwählten :?: :wink:) Aber zur Übersichtlichkeit schreib ich es meist so:
Delphi-Quellcode:
i := 5;
CheckBox1.Checked := (i = 5);
Dann könne andere Leute, die den Code zu Gesicht bekommen, schneller was damit anfangen :wink:

herrentor 15. Feb 2005 13:58

Re: combobox enabled
 
wie wäre denn das umgedrehte beispiel dazu. ich möchte nämlich auch das die checkbox auslesen kann, ob sich die combobox2 bei einer auswahl von combobox1 auf enabled=false stellt?

Sharky 15. Feb 2005 14:03

Re: combobox enabled
 
Zitat:

Zitat von herrentor
wie wäre denn das umgedrehte beispiel dazu. ich möchte nämlich auch das die checkbox auslesen kann, ob sich die combobox2 bei einer auswahl von combobox1 auf enabled=false stellt?

Meinst Du das jetzt so?
Code für Form1:
Delphi-Quellcode:
implementation

Uses
 Unit2;

{$R *.dfm}

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
  ComboBox1.Enabled := not ((ComboBox2.Text <> '') AND (Form2.CheckBox1.Checked))
end;
Code für Form2:
Delphi-Quellcode:
Uses
  Unit1;

{$R *.dfm}

procedure TForm2.CheckBox1Click(Sender: TObject);
begin
  Form1.ComboBox1.Enabled := not ((Form1.ComboBox2.Text <> '') AND (CheckBox1.Checked))
end;

Thanatos81 15. Feb 2005 14:04

Re: combobox enabled
 
Zitat:

Zitat von herrentor
wie wäre denn das umgedrehte beispiel dazu. ich möchte nämlich auch das die checkbox auslesen kann, ob sich die combobox2 bei einer auswahl von combobox1 auf enabled=false stellt?

Das würde ich im OnChange von ComboBox1 machen:
Delphi-Quellcode:
checkBox1.Checked := ComboBox2.Enabled;
oder
Delphi-Quellcode:
checkBox1.Checked := not(ComboBox2.Enabled);
Je nachdem wie rum es soll. Muss natürlich nach der Stelle, an der du ComboBox2 auf enabled := false stellst.
Falls da aber noch mehr passiert, wäre eine if-Struktur wahrscheinlich schon wieder übersichtlicher:
Delphi-Quellcode:
if Bedingung then
  begin
    ComboBox1.Enabled := false;
    CheckBox1.Checked := true;
    Anweisung3;
    Anweisung4;
  end;

herrentor 15. Feb 2005 14:11

Re: combobox enabled
 
schwere geburt. besten dank an alle.

herrentor 16. Feb 2005 08:31

Re: combobox enabled
 
ich hab da noch eine frage zu. und zwar klappt das noch nicht, dass sich die checkbox=checked stellt, wenn er auslesen kann ob bei combobox.change eine andere combobox2 enabled wird. er soll zum beispiel selber prüfen, ob sich eine combobox auf enabled stellt, wenn bei einer anderen eine auswahl getroffen wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 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-2025 by Thomas Breitkreuz