Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Hä? Warum ist das Ändern von Checked ein Click? (https://www.delphipraxis.net/213272-hae-warum-ist-das-aendern-von-checked-ein-click.html)

freejay 3. Jul 2023 14:40

AW: Hä? Warum ist das Ändern von Checked ein Click?
 
Also wenn ich im Code versuche, bei einer TCheckBox eine Property oder Methode mit "click" zu finden bekomme ich nur "OnClick" , kein "ClicksDisabled"...

jaenicke 3. Jul 2023 15:07

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

Zitat von freejay (Beitrag 1524148)
Also wenn ich im Code versuche, bei einer TCheckBox eine Property oder Methode mit "click" zu finden bekomme ich nur "OnClick" , kein "ClicksDisabled"...

Wie Use schon schrieb... die Property steht unter protected, ist also nur in der Klasse selbst und der Unit, in der sie deklariert ist, erreichbar.
Zitat:

Zitat von Uwe Raabe (Beitrag 1523947)
Lösung 1 (quick-and-dirty): Du setzt das (allerdings protected) Property ClicksDisabled temporär auf True.

Delphi-Quellcode:
type
  TMyCheckBox = class(TCheckBox)
  end;

...

TMyCheckBox(CheckBox1).ClicksDisabled := True;

Delphi.Narium 3. Jul 2023 15:16

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

Zitat von freejay (Beitrag 1524148)
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;

himitsu 3. Jul 2023 15:26

AW: Hä? Warum ist das Ändern von Checked ein Click?
 
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.

freejay 3. Jul 2023 15:44

AW: Hä? Warum ist das Ändern von Checked ein Click?
 
Delphi-Quellcode:
type
  TMyCheckBox = class(TCheckBox)
  end;

...

TMyCheckBox(CheckBox1).ClicksDisabled := True;
Ich glaube so ein Konstrukt hab ich in meinem Vierteljahrhundert Delphi erst einmal benutzt/benutzen müssen. Das ist mir einfach nicht mehr eingefallen...

3 x Danke!

himitsu 3. Jul 2023 16:24

AW: Hä? Warum ist das Ändern von Checked ein Click?
 
Viele nennen sowas
Delphi-Quellcode:
type THackedCheckBox = class(TCheckBox);
,
aber Einige haben sich angewöhnt es netter zu benennen
Delphi-Quellcode:
type TCheckBoxAccess = class(TCheckBox);
.
(das END ist optional, wenn ansonsten nichts verändert wird)

Es ginge auch ohne es Umzubennen
Delphi-Quellcode:
type TCheckBox = class(StdCtrls.TCheckBox); // bzw. (Vcl.StdCtrls.TCheckBox)

Oberhalb das Form kann man damit auch lokal Komponenten "umbauen", welche so dann auch direkt auf der Form laden. (zur Laufzeit, nicht im FormDesigner)



PS, siehe #16 ... da brav für voten, damit sowas hier bald nicht mehr nötig ist.

jaenicke 3. Jul 2023 16:31

AW: Hä? Warum ist das Ändern von Checked ein Click?
 
Ja, es geht auch ohne anders genannten Typ. Das mache ich allerdings ungern, denn wenn man den Code dann kopiert, wundert man sich, dass er anderswo nicht funktioniert. Oder man postet ihn hier im Forum, ohne dran zu denken... :lol:

freejay 4. Jul 2023 10:28

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

Zitat von himitsu (Beitrag 1524155)
...PS, siehe #16 ... da brav für voten, damit sowas hier bald nicht mehr nötig ist.

Done.

Redeemer 5. Jul 2023 09:16

AW: Hä? Warum ist das Ändern von Checked ein Click?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Sehr gut ist auch TComboBox. Das hat die Ereignisse OnSelect und OnClick. Beide sind komplett identisch. So gibt es kein Ereignis fürs Klicken in die ComboBox, dafür aber eins fürs Drücken der Pfeiltasten: OnClick.
Ebenfalls gut: TListView.Items.Add verhält sich komplett anders, je nach dem Wert von Checkboxes. Ist Checkboxes False, passiert schlicht nichts. Ist Checkboxes True, werden gleich drei Ereignisse ausgelöst.
Oder du klickst links auf das StateImage eines ListViews. Du erhältst einmal MouseDown und zweimal MouseUp, weil du das erste MouseUp bereits vorm Loslassen kriegst.

Ich habe euch mal meine gesammelten Worst-Ofs der Delphi-Logik angehängt.

himitsu 5. Jul 2023 09:41

AW: Hä? Warum ist das Ändern von Checked ein Click?
 
@Redeemer
Das abschließende #13#10 beim TStrings.Text ist eigentlich ein sLineBreak, bzw. ganz genau das Delphi-Referenz durchsuchenTStrings.LineBreak.
Merkst du, wenn nicht für Windows kompiliert wird und die Unixoiden bloß ein #10 haben.

Und dafür gibt es auch schon eine Lösung: Delphi-Referenz durchsuchenTStrings.TrailingLineBreak
[add] https://docwiki.embarcadero.com/Libr...ilingLineBreak


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 Uhr.
Seite 3 von 3     123   

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