Announcement

Collapse
No announcement yet.

Welches TMemo ist am Schirm sichtbar ?

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

  • Welches TMemo ist am Schirm sichtbar ?

    Hallo,

    Habe ein PageControl mit über 10 TabSheets.
    Auf jedem TabSheet liegt ein TMemo. Es ist also immer nur ein Memo
    sichtbar. Jetzt möchte ich das aktuelle Memo drucken, oder suchen oder ...
    Wie krieg ich raus, welches Memo sichtbar ist ?

    Folgendes funktioniert NICHT :

    for I:= 0 to ComponentCount -1 do
    if Components[I] is TMemo then
    if (Components[I] as TMemo).showing then
    begin
    ....



    Vielen Dank

  • #2
    Ok, über die <b>PageControl.ActivePage</b> kommst du auf's aktuelle TabSheet. Beim TabSheet gibt es die <b>Components</b>-Eigenschaft die alle den TabSheet untergeordneten Komponenten auflistest.<p>
    Probiers mal so:<p>
    <pre>
    with PageControl.ActivePage do
    for i := 0 to ComponentCount - 1 do
    if Component[I] is TMemo then begin
    // Jo, Memo gefunden.......
    TuDiesUndDas;
    end;
    </pre>
    <p>
    Alles klaro?
    <p>
    Gruß,<br>
    Bernhar

    Comment


    • #3
      Hallo Bernhard,

      vielen Dank für deine Antwort. Leider - es funktioniert nicht :
      Egal ob ich ToolBar1.ComponentCount, PageControl1.ComponentCount, PageControl1.ActivePage.ComponentCount abfrage - ComponentCount ist immer 0 !
      Nur Form1.ComponentCount liefert die Anzahl der Komponenten - allerdings natürlich die Anzahl aller im ganzen Projekt.

      Was kann ich tun ?

      Vielen Dan

      Comment


      • #4
        <p>Hallo Gerhard,<br>
        <br>
        versuche es einmal mit <b>ControlCount</b> und <b>Controls</b>.<br>
        <br>
        Gruß Thomas</p&gt

        Comment


        • #5
          Hallo Gerhard,

          hast Du schon mal "ActiveControl" der Form abgefragt?
          Mehr fällt mir leider auch nicht ein.

          Gruß Andr

          Comment


          • #6
            Hallo Gerhard!<p>
            Jetzt wo du es sagtst ist es mir eh klar, warum es zuerst nicht geklappt hat: Der Owner der Memos ist ja noch immer das Formular und nicht die TabSheets. Probier es doch mit der Parent-Eigenschaft der Memos:<p>
            <pre>
            for i := 0 to ComponentCount - 1 do // diesmal ComponentCount vom Formular!
            if (Component[I] is TMemo) and (TMemo(Component[i]).Parent = PageControl.ActivePage then begin
            // Jo, Memo gefunden.......
            TuDiesUndDas;
            end;
            </pre>
            <p>
            Leider hab ich keine Zeit zum Ausprobieren, das müsste aber jetzt klappen (hoffentlich....)<p>
            Gruß,<br>
            Bernhar

            Comment


            • #7
              Hallo Thomas,

              vielen Dank für den Tipp, so klappts :

              for J:= 0 to PageControl1.ActivePage.ControlCount -1 do
              if PageControl1.ActivePage.Controls[J] is TMemo then
              MemoFind:=(PageControl2.ActivePage.Controls[J] as TMemo)

              Comment

              Working...
              X