AGB  ·  Datenschutz  ·  Impressum  







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

Abhängigkeit 2er DBCheckboxen

Ein Thema von needatip · begonnen am 23. Nov 2006 · letzter Beitrag vom 24. Nov 2006
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

Abhängigkeit 2er DBCheckboxen

  Alt 23. Nov 2006, 17:43
Hallo,
ich möchte 2 DBCheckboxen voneinander abhängig anzeigen und die Werte anpassen.

Grundvorraussetung ist dass wenn cb1.Checked true ist, dann darf die 2. DBCheckBox cb2 nicht sichtbar sein.
Delphi-Quellcode:
procedure TFORM1.cb1Click(Sender: TObject);
begin
  if cb1.Checked = true then cb2.Visible = true
     else cb2.Visible = false;
end;
Jetzt möchte ich noch, dass wenn man auf cb1 klickt, nicht nur die cb2 nicht angezeigt wird, sondern dass dann auch
cb2 auf unchecked gesetzt wird.

Bitte um Hilfe.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Abhängigkeit 2er DBCheckboxen

  Alt 23. Nov 2006, 18:04
Delphi-Quellcode:
procedure TFORM1.cb1Click(Sender: TObject);
begin
   cb2.Visible := not cb1.Checked;
   cb2.checked := false;
end;
Andreas
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Abhängigkeit 2er DBCheckboxen

  Alt 23. Nov 2006, 18:21
Sorry hab das falsch interpretiert.
Grundvorraussetung ist dass wenn cb1.Checked false ist, dann darf die 2. DBCheckBox cb2 nicht sichtbar sein.
Also muss ich doch schreiben:

Delphi-Quellcode:
procedure TFORM1.cb1Click(Sender: TObject);
begin
   cb2.Visible := cb1.Checked;
   cb2.checked := false;
end;
Wenn dann bei beiden Checked = true ist, und dann das nächste mal draufklicke ist nur cb1.checked false.
Es sollen dann aber beide Checkboxen false sein !
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#4

Re: Abhängigkeit 2er DBCheckboxen

  Alt 24. Nov 2006, 10:30
Moin
[quote="needatip"]
Grundvorraussetung ist dass wenn cb1.Checked false ist, dann darf die 2. DBCheckBox cb2 nicht sichtbar sein. [/qoute]

Zitat von shmia:
Delphi-Quellcode:
procedure TFORM1.cb1Click(Sender: TObject);
begin
   cb2.Visible := not cb1.Checked;
end;
Genau das ist es:

Zitat von needatip:
Wenn dann bei beiden Checked = true ist, und dann das nächste mal draufklicke ist nur cb1.checked false.
Es sollen dann aber beide Checkboxen false sein !
Also beide Checkboxen sollen den gleichen Status haben?Das interpretiere ich dich richtig? Na, dann mach's halt so:
Delphi-Quellcode:
procedure TFORM1.cb1Click(Sender: TObject);
begin
   cb2.Visible := not cb1.Checked;
   cb2.Checked := cb1.Checked;
end;
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Abhängigkeit 2er DBCheckboxen

  Alt 24. Nov 2006, 11:19
Vielleicht hab ich vergessen zu erwähnen:
wenn cb1.checked = false ist dann soll cb2.visible = false und cb2.checked = false sein.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Abhängigkeit 2er DBCheckboxen

  Alt 24. Nov 2006, 11:31
Hai,

nur eine kleine Anmerkung:

Wenn Du für eine CheckBox eine "OnClick"-Ereigniss hast wird dieses auch dann aufgerufen wenn die Eigenschaft Checked geändert wird und nicht nur wenn man mit der Maus auf die CB klickt.

Dieser Code hier erzeugt also eine schöne Rekursion:
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  CheckBox1.Checked := not(CheckBox1.Checked)
end;
Stephan B.
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Abhängigkeit 2er DBCheckboxen

  Alt 24. Nov 2006, 11:42
Ok hab ich verstanden.
Wie hol ich nun die Kuh vom Eis?
Meine Aufgabe ist folgende:
ich habe zwei DBCheckboxen, eine für das Feld Export und eine für das Feld Drittland.
Wenn nun beim Feld Export ein Häkchen gesetzt wird soll die Checkbox Drittland sichtbar werden.
Jetzt kann man auch für DBCheckbox Drittland ein Häkchen setzen oder eben nicht.
Wenn aber später das Häkchen bei Export herausgenommen wird, soll auch das Häkchen bei Drittland herausgenommen werden und
eben die Checkbox Drittland unsichtbar werden.
Sorry, ich hoffe mich nun etwas klarer ausgedrückt zu haben.
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#8

Re: Abhängigkeit 2er DBCheckboxen

  Alt 24. Nov 2006, 13:19
Zitat von needatip:
...
Sorry, ich hoffe mich nun etwas klarer ausgedrückt zu haben.
Und ich hoffe, das nun richtig verstanden zu haben:
Delphi-Quellcode:
procedure cb1Click(Sender: TObject);
begin
  cb2.Visible := cb1.checked;
  cb2.checked := (cb1.checked and not cb2.Visible);
//--bzw vereinfacht:
  cb2.Checked := false;
end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Abhängigkeit 2er DBCheckboxen

  Alt 24. Nov 2006, 13:28
Hallo needatip,

auch GUI-Design kennt gewisse Best Practices. Dazu gehört, dass man die zweite CheckBox nicht unsichtbar macht, sondern lediglich disabled. Unsichtbar macht nur dann Sinn, wenn der vom Control eingenommene Raum anderweitig genutzt werden kann.

Und wenn du datensensitive Controls (DBCheckBox) einsetzt, dann manipuliert der Benutzer diese Controls, dein Code aber manipuliert die Feldwerte des Datensatzes direkt.

Delphi-Quellcode:
procedure TDemoForm.CBExportClicked(Sender: TObject);
begin
  with Table do
    if (State = dsEdit) or (State = dsInsert) then
    begin
      FieldByName('DRITTLAND').AsBoolean := False;
      CBDrittLand.Enabled := CBExport.Checked;
    end;
end;

procedure TDemoForm.DataSourceDataChange(Sender: TObject; Field: TField);
begin
  if not Assigned(Field) then
    CBDrittLand.Enabled := CBExport.Checked;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Abhängigkeit 2er DBCheckboxen

  Alt 24. Nov 2006, 18:12
Bin für jeden Ratschlag dankbar. - Alles super !
Beste Grüsse.
  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 08:16 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