AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Hä? Warum ist das Ändern von Checked ein Click?

Hä? Warum ist das Ändern von Checked ein Click?

Ein Thema von Alallart · begonnen am 29. Jun 2023 · letzter Beitrag vom 5. Jul 2023
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.071 Beiträge
 
Delphi 12 Athens
 
#1

AW: Hä? Warum ist das Ändern von Checked ein Click?

  Alt 3. Jul 2023, 06:22
Ich fände es auch gut, wenn es eine passende globale Einstellung gäbe. Allerdings könnte die natürlich auch zu Irritationen führen.

Ich meinte nur, weil es das ClicksDisabled auch schon in Delphi 5 gab. Ältere Versionen habe ich aktuell nicht mehr greifbar. Daher kann ich nicht sagen, in welcher Version das eingeführt wurde.
Das gibt es seit Delphi 4.

Ja, ich habe hier schon öfter Diskurse dazu hier gelesen. Die Beispiele dazu habe ich nachkompiliert und konnte bei <= Delphi 7 keine Fehler nach produzieren.
Weil es nicht zum Thema gehört nur kurz:
Sagst du denn dann auch im echten Leben: Wenn "das Wetter ist schön" wahr ist, gehe ich zum Fußballspielen.
Wenn nicht, was macht es dann für einen Sinn, das im Quelltext so verklausuliert zu schreiben, unabhängig von den möglichen Fehlern?

Beispiel getestet mit Delphi 1 (mit zusätzlich BoolToStr, das es dort noch nicht gibt) bis 7:
Delphi-Quellcode:
function Example(const AValue: string): Boolean;
begin
  Result := Boolean(CompareStr(AValue, 'Test'));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Echter Wert: ' + BoolToStr(Example('TestNix'), True)
    + sLineBreak + 'Manuelle Auswertung: ' + BoolToStr(Example('TestNix') = True, True));
end;
Sebastian Jänicke
AppCentral

Geändert von jaenicke ( 3. Jul 2023 um 06:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Hä? Warum ist das Ändern von Checked ein Click?

  Alt 3. Jul 2023, 09:06
Ich fände es auch gut, wenn es eine passende globale Einstellung gäbe. Allerdings könnte die natürlich auch zu Irritationen führen.
Es muß ja nicht gleich global sein.
Ein sichtbares, bzw. wirklich nutzbares Property an den CheckBoxen wäre schon nett.

Aber joar, vielleicht eine Einstellung in den IDE-Settings und Projekt-Settings, wo man das Default festlegen kann, für neue CheckBoxen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Jul 2023 um 15:23 Uhr)
  Mit Zitat antworten Zitat
klaus schaaff

Registriert seit: 25. Jul 2009
24 Beiträge
 
#3

AW: Hä? Warum ist das Ändern von Checked ein Click?

  Alt 3. Jul 2023, 14:11
Hallo,

@Uwe Raabe
@jaenicke

ich habe StdCtrls.pas in allen Versionen von Delphi 5 bis Delphi 10 duchsuchen lassen nach 'ClicksDisabled' und 'FClicksDisabled'. Keine der Versionen von TCustomCheckBox enthält diese property. Eine Frage bleibt offen, die ich nicht exakt beantworten kann. Hatten Updates dieser Delphi Versionen vielleicht doch TCustomCheckBox property ClicksDisabled eingebunden?
Ich finde es schade, dass es kein offizielles Tool gibt, um diese Fragen korrekt zu bentworten.

Dagegen haben TButtonControl und TRadioButton ClicksDisabled.

Ein Kuriosum gibt es dennoch:

Delphi-Quellcode:
procedure TCustomCheckBox.SetState(Value: TCheckBoxState);
begin
  if FState <> Value then
  begin
    FState := Value;
    if HandleAllocated then
      SendMessage(Handle, BM_SETCHECK, Integer(FState), 0);
    if not ClicksDisabled then Click; // <- Hier
  end;
end;
Das ist die einzige Stelle.

In Delphi wurden schon immer Quelltext-Dateien *.pas mit leicht verändertem Code ausgeliefert, als die complierten *.dcu. Das scheint ein solcher Fall zu sein.

Alle Versuche mit Casts TButtonControl(CheckBox1).ClicksDisabled führten zu nichts, auch Debug dcu's dazu zuschalten brachten keinen Erfolg. Vielleicht hat jemand eine Idee, wie man doch zu CheckBox1.ClicksDisabled kommt.


Liebe Grüße
Klaus Schaaff
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.071 Beiträge
 
Delphi 12 Athens
 
#4

AW: Hä? Warum ist das Ändern von Checked ein Click?

  Alt 3. Jul 2023, 14:32
Dagegen haben TButtonControl und TRadioButton ClicksDisabled.
Und TCustomCheckBox ist von TButtonControl abgeleitet...

Wie schon geschrieben, die TCheckBox funktioniert mit ClicksDisabled seit Delphi 4 so.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
276 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Hä? Warum ist das Ändern von Checked ein Click?

  Alt 3. Jul 2023, 14:40
Also wenn ich im Code versuche, bei einer TCheckBox eine Property oder Methode mit "click" zu finden bekomme ich nur "OnClick" , kein "ClicksDisabled"...
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.599 Beiträge
 
Delphi 7 Professional
 
#6

AW: Hä? Warum ist das Ändern von Checked ein Click?

  Alt 3. Jul 2023, 15:16
Also wenn ich im Code versuche, bei einer TCheckBox eine Property oder Methode mit "click" zu finden bekomme ich nur "OnClick" , kein "ClicksDisabled"...
Ist beim VorVorfahren von TCheckBox als Protected deklariert.
Delphi-Quellcode:
...
  TButtonControl = class(TWinControl)
  private
    FClicksDisabled: Boolean;
...
  protected
...
    property ClicksDisabled: Boolean read FClicksDisabled write FClicksDisabled;

...
  TCustomCheckBox = class(TButtonControl)
...
  TCheckBox = class(TCustomCheckBox)
...
Eigenschaft in 'nem Nachfahren veröffentlichen?
Delphi-Quellcode:
type
  TMyCheckBox = class(TCheckBox)
  published
    property ClicksDisabled: Boolean;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Hä? Warum ist das Ändern von Checked ein Click?

  Alt 3. Jul 2023, 15:26
Click ist nur Protected, also aus "deinem" Code auch nicht zugänglich.
Bei TButton dagegen wurde es nach Puplic verschoben, somit kann dort direkt aufgerufen werden.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:25 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