Создание метки видимой / не видимой в Delphi - PullRequest
1 голос
/ 27 марта 2010

Я хотел бы, чтобы кнопка меняла метку между видимой и невидимой при нажатии. Я попробовал следующий код, но он не работает:

Var:
  Hidden : Boolean;
Begin
  If Hidden = True
    Then 
      Begin
        Label6.Visible := True;
        Hidden := False;
      End;
  If Hidden = False
    Then
      Begin
        Label6.Visible := False;
        Hidden := True;
      End;

Он компилируется, но не работает!

Ответы [ 3 ]

3 голосов
/ 27 марта 2010

Сделайте это:

 Label6.Visible := not Label6.Visible;

Это весь код, который вам нужен.

Кроме того, если вы собираетесь обратиться к метке в коде, пожалуйста, дайте ей правильное идентификационное имя(например, lblCountOfMatches или что-то в этом роде).

Наконец, причина, по которой ваш код не работает, заключается в том, что Hidden никогда не устанавливается.При объявлении будет по умолчанию установлено значение false.Если вы хотите использовать имеющийся у вас код (который слишком многословен), вы должны выполнить команду:

 Hidden := Label6.Visible

перед проверкой скрытого.

0 голосов
/ 08 марта 2016

У меня была похожая проблема. Я заметил, что это вызвано тем, что я изменил состояние видимости элемента управления (Tedit), когда форма еще не была видна.

Так что это не сработало: Form2.Edit1.Visible: = True; Form2.Visible: = True;

Это сработало: Form2.Visible: = True; Form2.Edit1.Visible: = True;

Итак, сначала сделайте видимой форму, а затем элемент управления.

Прежде чем найти это, я попробовал много решений, но ни одно не помогло. Я использую Delphi 2007.

0 голосов
/ 27 марта 2010

Проблема двоякая: вы объявили локальную переменную, которую затем пытаетесь сравнить, и вы выполняете оба сравнения, даже если первое было обработано.

Вам также не нужен логический: вы можете просто проверить, виден ли он в данный момент

Поэтому вы должны делать что-то вроде этого:

begin 
  if Label6.Visible then  
    Label6.Visible := False
  else
    Label6.Visible := True; 
end;

Или еще проще:

begin
  Label6.Visible := not Label6.Visible;
end;
...