Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Появление Label и Edit


Автор: KPEHDEL 12.6.2010, 08:41
Есть свиток, с пунктами "Вход" и "Регистарция". Есть 2 Label и 2 Edit.
Хочу сделать, чтобы пока пользователь не выбрал "Вход" или "Регистарция" эти окна были невидимы, при выборе появлялись на форме. Делаю так:
В разделе фар указываю новую переменную
var
  F1: TF1;
  Enter: Label1, Label2, Edit1, Edit2; //вот эта строчка.
Жму на свиток, перехожу в Events, открываю OnChange и там в редакторе окгда пишу следующее:
If F1.ComboBox1.ItemIndex 1 do
Visible Enter:=True then Visible Enter:=False;

PS:F1 - это форма.
Поясните пожалуйста, что делаю не так и как правильно.

Автор: cyberstream 12.6.2010, 09:56
Если лейблы и едиты ты добавил на форму, они описаны в секции
Код

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Вытри
Код

  Enter: Label1, Label2, Edit1, Edit2; 

Видимость меняется 
Код

Label1.Visible := False

Полагаю, лучше раздать им Visible := False в Object Inspector.

Пиши, читай help и копипасть внимательней. 

Автор: KPEHDEL 12.6.2010, 17:20
Ещё один схожий вопрос, поэтому не буду создавать новую тему.
Есть ListBox с 15ю пунктами и Panel1, которая должна появляется при выборе одно из пункта (строки).
Делаю так:
Код

procedure TF4.ListBox1Click(Sender: TObject);
begin
 If F4.ListBox1.Lines 1 do //форма 4 ListBox 1, строка
 Panel1.Visible := True // то Panel1 видимая

end;

end.

Я не правильно указал строку, как правильно? Или может, есть более разумные способы решения этого действия.

Автор: cyberstream 12.6.2010, 20:02
Самый разумный способ - кликнуть по ListBox на своей форме, нажать F1, среди Properties компонента ознакомиться с ItemIndex и Example-ом к нему, подсказывающим как правильно указывать строку. smile 

Автор: PsiMagistr 13.6.2010, 14:40
KPEHDEL, есть такое свойство у списков: ItemIndex. Хранит номер выделенного элемента, причем нумерация начинается с нуля. То есть, выделил ты 1ый элемент списка -  свойство ItemIndex получило значение 0. Если ни один из элементов не выделен там хранится значение -1. Вот твой код:

Код

 If F4.ListBox1.Lines 1 do //Кстати, не можешь объяснить, зачем тебе понадобилось полное обращение к объекту: 

//ИмяФормы.ИмяОбъекта.Свойство?  Если здесь можно написать просто ИмяОбъекта.Свойство.


//Учти, что нет и не было свойства Lines у списков. 

//Что такое конструкция if .... do? Не знаю такой. Ты имел ввиду if ... then ... ?




Вот мой код:

Код

procedure TF4.ListBox1Click(Sender: TObject);
begin
if F4.ListBox1.ItemIndex <> -1  then  //Если ItemIndex не равен -1 (это означает, что в списке выделен какой то (любой из) элемент, то:
 Panel1.Visible := True; //Делаем панель видимой.
end;

Автор: bems 13.6.2010, 14:47
PsiMagistr, F4 тут лишнее

Цитата(PsiMagistr @  13.6.2010,  14:40 Найти цитируемый пост)
procedure TF4.ListBox1Click(Sender: TObject);
begin
if F4.ListBox1.ItemIndex <> -1  then  //Если ItemIndex не равен -1 (это означает, что в списке выделен какой то (любой из) элемент, то:
 Panel1.Visible := True; //Делаем панель видимой.
end;



Автор: PsiMagistr 13.6.2010, 15:17
bems, совершенно верно. Я сохранил полное обращение, поскольку так было у  KPEHDEL.

Автор: KPEHDEL 13.6.2010, 19:14
Большое спасибо за помощ! 
Всё хорошо и понятно.
Правда у мну по плану к каждой ItemIndex, своя Panel. Просто в коде изменил <> -1 на = 1 и всё работает.

Автор: PsiMagistr 13.6.2010, 19:40
Цитата(KPEHDEL @  13.6.2010,  19:14 Найти цитируемый пост)
Правда у мну по плану к каждой ItemIndex, своя Panel. Просто в коде изменил <> -1 на = 1 и всё работает.


Ну ка ну ка.  smile 

KPEHDEL, Дружище, поставь сюда код, дай ка взглянуть. А то у меня подозрение.


Автор: KPEHDEL 15.6.2010, 12:50
А нет, не всё так гладко как я думал.
Код

procedure TF4.ListBox1Click(Sender: TObject);
begin
if ListBox1.ItemIndex = 0  then
 GroupBox1.Visible := True;
 GroupBox2.Visible := True;
end;

Всё бы ничего, но вскоре я заметил, что если выбрать эту строку, а потом выбрать другую, снвоа свойство Visible компонента не будет False.
Попробывал сделать так:
Код

procedure TF4.ListBox1Click(Sender: TObject);
begin
if ListBox1.ItemIndex = 0  then
 GroupBox1.Visible := True;
 GroupBox2.Visible := True;
else
GroupBox1.Visible := False;
GroupBox2.Visible := False;


В результате строка else гроздно покраснела и послала меня подальше.
Выделил else, нажал F1, посмотрел примеры и не понял чё не так.
Жду вашей помощи.

И заодно глупый попутный вопрос. Если жму F9, а форма загадочно мигает и ничего не появляется (не компилится), что это значит и как исправить?

Автор: bems 15.6.2010, 13:19
KPEHDEL, компоненты не при чем. Ты языка не знаешь.
Читай учебники.

Добавлено через 2 минуты и 6 секунд
Модератор: Тема закрыта, как не представляющая интереса.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)