AGB  ·  Datenschutz  ·  Impressum  







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

checkbox change ohne click

Ein Thema von khh · begonnen am 9. Mai 2011 · letzter Beitrag vom 10. Mai 2011
Antwort Antwort
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

checkbox change ohne click

  Alt 9. Mai 2011, 14:01
hallo zusammen,
gibt es ne Möglichkeit den Status einer Checkbox zu ändern, ohne das Ereignis OnClick auszulösen.
Wenn ich das richtig sehe werden beide Ereignisse zusammen ausgelöst.
Wozu dann die Unterscheidung?
Hintergund ist, dass ich auf das Setzen des Status im Programm anders reagieren möchte als wenn der Benutzer die checkbox anklickt.
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von rainerg
rainerg

Registriert seit: 5. Aug 2002
Ort: Hannover
82 Beiträge
 
Delphi XE Starter
 
#2

AW: checkbox change ohne click

  Alt 9. Mai 2011, 14:04
Ich denke, dies hier könnte dir helfen:
http://www.delphi-library.de/topic_Z...n_91692,0.html
Rainer G. aus H.
www.BunteReisebilder.de

Geändert von SirThornberry ( 9. Mai 2011 um 14:10 Uhr) Grund: Full-Quote des direkt davorliegenden Beitrages entfernt
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#3

AW: checkbox change ohne click

  Alt 9. Mai 2011, 14:08
ich danke dir
Karl-Heinz

Geändert von SirThornberry ( 9. Mai 2011 um 14:11 Uhr) Grund: Full-Quote des direkt davorliegenden Beitrages entfernt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: checkbox change ohne click

  Alt 9. Mai 2011, 14:27
Dafür eine eigene Komponente finde ich etwas übertrieben. Wie wäre es denn so?
Delphi-Quellcode:
type
  TCheckbox = class(StdCtrls.TCheckbox)
  private
    FAvoidClick: Boolean;
    function GetMyState: TCheckBoxState;
    procedure SetMyState(const Value: TCheckBoxState);
  public
    property AvoidClick: Boolean read FAvoidClick write FAvoidClick;
    property State: TCheckBoxState read GetMyState write SetMyState;
  end;

  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    ...
  end;

...

function TCheckbox.GetMyState: TCheckBoxState;
begin
  Result := inherited State;
end;

procedure TCheckbox.SetMyState(const Value: TCheckBoxState);
begin
  ClicksDisabled := FAvoidClick;
  inherited State := Value;
  ClicksDisabled := false;
end;
Über die neue Property AvoidClick kann man individuell je Checkbox angeben, ob sie ein Click-Event auslösen soll, wenn State geändert wird.
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 himitsu
himitsu

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

AW: checkbox change ohne click

  Alt 9. Mai 2011, 14:43
oder einfach nur
Delphi-Quellcode:
type
  TCheckbox = class(StdCtrls.TCheckbox)
    property ClicksDisabled;
  end;
Wenn man nun im OnCreate der Form CheckBox1.ClicksDisabled := True; setzt, wird ab da beim OnChange kein OnClick mehr ausgeführt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Mai 2011 um 15:21 Uhr) Grund: fehlten ein paar buchstaben und die groß/kleinschreibung *schäm*
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: checkbox change ohne click

  Alt 9. Mai 2011, 14:47
Ich hatte gar nicht in den Source von StdCtrls geschaut und wusste daher nicht, ob man ClicksDisabled dauerhaft ohne Probleme setzen kann/darf. Aber wenn das nicht zu unerwünschten Nebeneffekten führt, kann man sich den ganzen Schmonses tatsächlich sparen.
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 ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: checkbox change ohne click

  Alt 10. Mai 2011, 07:10
Delphi-Quellcode:
var
  lfOldOnClick: TNotifyEvent;
begin
  lfOldOnClick := chkBox.OnClick;
  chkBox.OnClick := nil;
  ...
  MachWasGanzGefinkeltes();
  ...
  chkBox.OnClick := lfOldOnClick;
end;
Ungetestet in die Tastatur gehämmert.

Oder guckst Du hier.
Delphi-Quellcode:
{set a checked}
yourCheckBox.Perform(BM_SETCHECK, 1, 0);

{set a unchecked}
yourCheckBox.Perform(BM_SETCHECK, 0, 0);
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#8

AW: checkbox change ohne click

  Alt 10. Mai 2011, 11:38
oder einfach nur
Delphi-Quellcode:
type
  TCheckbox = class(StdCtrls.TCheckbox)
    property ClicksDisabled;
  end;
Wenn man nun im OnCreate der Form CheckBox1.ClicksDisabled := True; setzt, wird ab da beim OnChange kein OnClick mehr ausgeführt.
scheint mir die einfachste Lösung zu sein

Ich danke euch
Karl-Heinz
  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 01: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