Announcement

Collapse
No announcement yet.

Parameterübergabe an FocusControl()

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

  • Parameterübergabe an FocusControl()

    Hallo,

    ich prüfe im Ereignis PageControl1Changing in einem TabSheet, welches mehrere ComboBoxen enthält, ->Text der Comboboxen auf einen Standardeintrag ab. Wenn dieser Standardeintrag
    in Text enthalten ist, wurde in dieser ComboBox noch keine Auswahl getroffen.

    Wenn das so ist merke ich mir in der Variablen boxname das Feld Name der ComboBox.

    Diesen Namen möchte ich dann an mit Form3->FocusControl(boxname);
    an FocusControl übergen.

    Klappt so leider nicht - keine Übereinstimmung des Typs ...

    Wenn ich FocusControl(ComboBox10) schreibe klappt es.

    Ich habe boxname bisher als Ansistring und char deklariert.
    Nun weiss ich nicht weiter.

    Kann mir jemand sagen wie das angelegt werden muß?


    Gruß Henry
    Gruß Henry

  • #2
    Wie der Hilfe zu entnehmen ist, erwartet FocusControl ein Objekt, dass sich auf TWinControl zurückführen lässt. Demnach keinen String.....

    Davon ausgehend, dass ComboBox10 der Name deiner Komponente ist, ist dass dann auch ok
    Christian

    Comment


    • #3
      Hallo Christian,

      die Hilfe hab ich auch gelesen. Leider aber habe ich nicht verstanden wie ich FocusControl den Komponentennamen als Variable übergeben kann.

      Wenn du ein Beispiel dafür hättest, wäre es sicher für mich einfacher.

      Gruß Henry
      Gruß Henry

      Comment


      • #4
        Ich denke du könntest einen konzeptionellen Fehler haben:

        Wenn das so ist merke ich mir in der Variablen boxname das Feld Name der ComboBox.
        Warum merken? Warum nicht gleich hier - wo du offenbar die ComboBox noch "im Griff" hast - den Focus setzen??

        Mit

        ComboBoxXXXX->SetFocus();

        Da nur ein Control den Focus haben kann, kann die Prüfung an dieser Stelle abgebrochen werden. Ein "Merken" ist überflüssig.

        Sofern es nun doch mit "merken" sein soll:

        Musst du dir kein String merken mit den Namen, sondern das Object selber. Als Beispiel in der Headerdatei unter Private

        TComboBox *DieGemerkte;

        anlegen. Dann, an deiner Stelle wo du die den Namen merkst, an diese Varaible eine Kopie des gefundenden Objektes zuweisen.

        Soll es nun doch mit dem Namen sein, musst die Komponetenliste deines Formulars durchsuchen um diese zu finden und dann zu casten. Wie das geht steht etwas unter deinem Posting hier

        http://entwickler-forum.de/showthread.php?t=43499
        Christian

        Comment


        • #5
          Hallo Christian,

          Danke für die Hilfe.
          Der Tip, die Suche abzubrechen und den Focus auf die betreffende ComboBox zu legen, sobald ein entsprechender Eintrag gefunden wurde, ist der logisch richtigste.

          Gruß Henry
          Gruß Henry

          Comment

          Working...
          X