Einzelnen Beitrag anzeigen

Benutzerbild von LoewenZahn
LoewenZahn

Registriert seit: 10. Okt 2013
22 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

For + panel + Controlcount = .ctl3d? OOP und das Problem der Deklaration

  Alt 5. Nov 2013, 14:28
Delphi-Version: 2007
Hallo liebe Interessenten,

als Neuling stoße ich immer wieder auf kleine Hürden und Hindernisse, so auch diesmal. Ich habe ein Panel mit verschiedenen Elementen: TLabel, TDBEdit, TAdvDBCalcEdit, TDBMemo etc. nun wird (Wohl aufgrund eines Bugs) bei den Eingabeelementen das Attribut ctl3D nicht mit erzeugt sodass ich es dynamisch nacharbeiten will.

Wenn die Form erzeugt wird möchte ich, dass alle TDBEdits & Co. im Panel cdtl3D = true bekommen:

Delphi-Quellcode:
  for i := 0 to TWinControl(grb_attribute).ControlCount-1 do
        if TWinControl(grb_attribute).Controls[i] is TDBEdit then
           (TWinControl(grb_attribute).Controls[i] as TDBEdit).ctl3d := true;
Die TDBEdits werden nun erfolgreich verarbeitet, möchte ich jedoch auch die anderen Elemente berücksichtigen wird die If-Abfrage schnell lang und unübersichtlich!

Meine Frage ist: Gibt es nicht eine leichte Möglichkeit zu sagen: "Hey, wenn du als Element (TWinControl(grb_attribute).Controls[i]) das Attribut ctl3d besitzt, dann schalte es auf true!?

Alternativ habe ich auch an so etwas gedacht:

Delphi-Quellcode:
  for i := 0 to TWinControl(grb_attribute).ControlCount-1 do
        if not (TWinControl(grb_attribute).Controls[i] is TLabel) then
           TWinControl(grb_attribute).Controls[i].ctl3d := true;
... doch leider funktioniert dies nicht, da dass TwinControl undeklariert kein ctl3d Attribut besitzt.

Wenn mir jemand einen Schubs in die richtige Richtung geben könnte, wäre ich sehr verbunden!

Gruß
Tim
  Mit Zitat antworten Zitat