<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>I can't answer your question directly, but what I can tell you is
      that the last time I tried to use lazarius, (which admittedly was
      several years ago), it wasn't the least bit accessible.  Screen
      readers pick up on these elements to know what's visible on the
      screen, and what's an roll for screen reader use only, such as a
      label for a visible element.  I have mentioned that lazarus IDE is
      not accessible multiple times in the past, and yet, nobody seems
      to be interested in doing anything about it.  Perhaps this
      question will shed some light on the reasons why it isn't
      accessible.</p>
    <p>Or, for all I know, it's 100 percent accessible, because someone
      fixed it, but I find that generally, if an application is not
      accessible, that rarely changes just from standard work on it.  99
      percent of the time, the application remains inaccessible, because
      nonstandard controls are used, or accessibility rolls are not
      coded on the nonstandard controls that are used, usually both.</p>
    <p>I'm guessing if someone were to investigate, the difference
      between the two things you're asking might actually be more than
      is currently expected, but then again, depending on terminology, I
      could be completely wrong, and the things that are being discussed
      have nothing at all to do with accessibility, wouldn't be the
      first time terms have gotten mixed up when trying to solve
      accessibility issues.<br>
    </p>
    <div class="moz-cite-prefix">On 10/19/2026 4:38 PM, Martin Frb via
      fpc-devel wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:4f4f0e8f-df94-43dc-9c8c-18f19b7c91a8@mfriebe.de">
      Can someone comment on this?<br>
      <br>
      Do we have C-like distinction between access and visible? <br>
      <br>
      I would think not?<br>
      <br>
      If you can access it you can see it, and vice versa? <br>
      I can't think of any other case (i.e. where an identifier would be
      hidden by something that you can't access like in the example
      below)<br>
      <br>
      <div class="moz-forward-container">We do have the reverse, that a
        public property/function can expose a private type (but not the
        name of the type, just its "content" (enum/members))<br>
        <br>
        <br>
        <br>
        -------- Forwarded Message --------
        <table class="moz-email-headers-table">
          <tbody>
            <tr>
              <th nowrap="nowrap"><br>
              </th>
              <td><br>
              </td>
            </tr>
            <tr>
              <th nowrap="nowrap"><br>
              </th>
              <td><br>
              </td>
            </tr>
            <tr>
              <th nowrap="nowrap"><br>
              </th>
              <td><br>
              </td>
            </tr>
            <tr>
              <th nowrap="nowrap"><br>
              </th>
              <td><br>
              </td>
            </tr>
            <tr>
              <th nowrap="nowrap"><br>
              </th>
              <td><br>
              </td>
            </tr>
          </tbody>
        </table>
        <br>
        <br>
        <p>Martin,</p>
        <p>Last week, while we were discussing the FreePascal
          accessibility declarations, I began to wonder whether the
          private/strict private/protected/strict protected keywords
          really were accessibility values or visibility values.  In the
          reference manual, it uses both terms interchangeably.  It
          says, "The visibility of the different sections is...", but
          then in the text for each value, it uses verbiage like "can be
          accessed".  In C++, there are situtations where visibility vs.
          accessibility is an important distinction.  My go-to to expose
          this is hiding rules.  For example:</p>
        <blockquote>
          <p>int foo = 1;<br>
            <br>
            class C {<br>
            private:<br>
               int  foo {2};<br>
            };<br>
            <br>
            class D : public C {<br>
            public:<br>
               void func()<br>
               {<br>
                  // illegal because C::foo is visible here, but not
            accessible.<br>
                  // Because C::foo is visible, it hides ::foo.      <br>
                  std::cout << foo << '\n';<br>
               }<br>
            };</p>
        </blockquote>
        <p>Or another example:</p>
        <blockquote>
          <p>class C {<br>
            public:<br>
               int foo { 1 };<br>
            };<br>
            <br>
            class D : public C {<br>
            private:<br>
               int foo { 2 };<br>
            };<br>
            <br>
            int main()<br>
            {<br>
               D  obj;<br>
               // illegal because D::foo is visible here, but not
            accessible.<br>
               // Because D::foo is visible here, it hides C::foo.<br>
               std::cout << obj.foo << '\n';<br>
            }<br>
          </p>
        </blockquote>
        <p>My question is: In FreePascal, are there situations like this
          where the private/strict private/protected/strict protected
          names can hide other names at global scope?  Or at any "outer"
          scope, for that matter, if these constructs can be declared
          arbitrarily nested within other constructs, like in Ada.  If
          they all can hide names, to my mind, that rules out using
          visibility as any part of the description.  Instead, if none
          of them can hide other names, then perhaps all of them should
          be visibility values instead.  Or, if it's impossible to
          construct an example in FreePascal that can tell the
          difference, then perhaps I'm just splitting hairs.  :)<br>
        </p>
        <p>Regards,<br>
          Todd Allen<br>
        </p>
      </div>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
fpc-devel maillist  -  <a class="moz-txt-link-abbreviated" href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel">https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel</a>
</pre>
    </blockquote>
  </body>
</html>