Announcement

Collapse
No announcement yet.

An eine Funktion verschiedene VCL-Komponenten übergeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • An eine Funktion verschiedene VCL-Komponenten übergeben

    Hallo,

    ich möchte mir eine Funktion bauen, die Pflichtfelder prüft. Der Funktion übergebe ich eine Eingabe-Komponente (Edit, ComboBox ...), diese prüft ob ein wert eingegeben wurde und falls nicht -> Meldung und SetFocus.

    Ist sowas ohne Funktions-Überladung möglich? Wenn ja, was muß ich übergeben?

    Besten Dank im Voraus, Thomas Wagner

  • #2
    Hallo,

    theoretisch kannst du eine Funktion schreiben, der du ein TControl (oder TWinControl, wenn du nur fensterorientierte Steuerelemente verwendest) übergibst, das du dann auswertest. Da aber TControl (und auch TWinControl) nur über sehr wenige Eigenschaften verfügen, wirst du kaum eine vernünftige Auswertung auf dieser Ebene machen können.

    Du müsstest also die Controls wieder per dynamic_cast wieder zurückkonvertieren, um sie auswerten zu können.

    <pre>
    bool auswerten(TControl* control)
    {
    klassenName = control->ClassName();
    if (klassenName == "TMaskEdit")
    {
    TMaskEdit* zwerg = dynamic_cast<TMaskEdit*>(control);
    if (zwerg->Text == "xyz")
    {
    ...
    }
    }
    else if (klassenName == "TEdit")
    {
    TEdit* zwerg = dynamic_cast<TEdit*>(control);
    }
    else if (klassenName == "TComboBox")
    {
    ...
    }
    }

    </pre>

    Dies ist allerdings kein sehr schönes Vorgehen. (Und objektorientiert schon gar nicht!).

    Besser ist es auf jeden Fall mit einer überladenen Funktion zu arbeiten

    Comment


    • #3
      also es müsste doch gehen, wenn man nur den Zeiger übergibt, oder

      Comment

      Working...
      X