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


Автор: Student00 7.3.2010, 15:04
Ситуация такая:

Пишу код в procedure TForm1.FormCreate(Sender: TObject);

такой код:
Код

If  Edit1.Text:='' then  BitBtn1.Enabled:=true;


А оно мне ошибку при компеляции:
Код

[Error] Unit1.pas(119): Type of expression must be BOOLEAN


Я конечно понимаю, что синтаксис ни к черту, но не могу сообразить а как правильно нужно.

А нужно что бы если поле Edit1 пустое, то кнопка BitBtn1 была неактивна.

Подскажите пожалуйста как правильно записать.  smile 


Автор: Coder 7.3.2010, 15:18
нужно использовать оператор "=" для сравнения, а нет ":="

Автор: Данкинг 7.3.2010, 15:26
Уточню: ":=" - это приравнивание одного к другому.

Автор: Student00 7.3.2010, 15:54
Спасибо больше товарищи, сделал
If  Edit1.Text='' then  BitBtn1.Enabled:=true;
 откомпилировалось.

Да только результата не достиг.
Кнопка при запуске по прежнему активна.
Что-то я видать не так делаю.  smile 

Автор: Proxin 7.3.2010, 15:58
Уже тупые вопросы потихоньку бесить начинают. Так и хочется написать, куда тебе эти глаза нужно засунуть.

Автор: Rodman 7.3.2010, 16:02
В свойствах кнопки надо сначала в поле Enable - False поставить..
и проверить нигде ли в коде еще активность не отображается...



 ! 
Rodman
Proxin, бесимся и сопим в две дырочки про себя.

Автор: Proxin 7.3.2010, 16:19
Предвидим следующий вопрос - а как апдейтить состояние кнопочки?
Так:
Код

procedure tform1.edit1keyup(sender:tobject;var key:word;shift:tshiftstate);
begin
if edit1.text='' then bitbtn1.enabled:=true else bitbtn1.enabled:=false;
end;

Автор: Qu1nt 7.3.2010, 16:41
Код

Button1.Enabled := Edit1.Text <> '';

Автор: Student00 7.3.2010, 17:39
Не могу никак сделать.   smile  smile 

Прописывал код:
Код

If Edit1.Text<>'' then BitBtn1.Enabled:=true else BitBtn1.Enabled:=false;

И в 
procedure TForm1.FormCreate(Sender: TObject);

и в
procedure TForm1.BitBtn2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);


и в

procedure TForm1.BitBtn1Click(Sender: TObject);

Если делаю свойство кнопки  Enabled:=trut.
Кнопка некативной становиться при любом варианте.
Возвращаю обратно и и она всегда активна.  smile  smile  smile  smile

Добавлено через 4 минуты и 8 секунд
Вот я креплю файл.

Автор: Proxin 7.3.2010, 17:52
а вам условие изменить слабо - заменить <> на = ?

Автор: Student00 7.3.2010, 18:06
Все я в конец запутался.

Наверное у меня руки не оттуда растут вот весь код:
(Я создал новый проект и на нем экспериментировавшую[code=delphi]
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
If Edit1.text='' then Button1.Enabled:=true;
end;

end.

Не работает.

Так:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 // If Edit1.text<>'' then Button1.Enabled:=true;
end;

procedure TForm1.Button1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 If Edit1.text<>'' then Button1.Enabled:=true;
end;

end.


Не работает.

Так:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 // If Edit1.text<>'' then Button1.Enabled:=true;
end;

procedure TForm1.Button1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
// If Edit1.text<>'' then Button1.Enabled:=true;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
If Edit1.text<>'' then Button1.Enabled:=true;
end;

end.

не работает.

Во всех этих случаях свойство Enabled на кнопке было true.

Тоже самое при False, только кнопка постоянно не активна вне зависиомти от того пишу я в Эдит чего или нет.

 smile  smile  smile  smile  smile  

Автор: Proxin 7.3.2010, 18:55
а else добавить? событие пихать на кейап.
вообще, вам совет - почитайте для начала книжку по дельфи какую-нибудь, а потом пишите.

Автор: Student00 7.3.2010, 19:07
Цитата(Proxin @ 7.3.2010,  18:55)
а else добавить? событие пихать на кейап.
вообще, вам совет - почитайте для начала книжку по дельфи какую-нибудь, а потом пишите.

Я обязательно прочту книжку по делфи.
Но вот в текущей проге что не так.
Она ведь не работает.  smile 


Я уже все переставил и else и хренелсе.



Автор: Proxin 7.3.2010, 19:14
особенно под торренты с порнушкой играми книгами умными, наверное, работается хорошо.
вот код.
Код

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;ь Shift: TShiftState);
begin
button1.enabled:=edit1.text<>'';
end;

кнопка неактивна, если в edit ничего нет.

Автор: kami 7.3.2010, 19:18
Цитата(Student00 @  7.3.2010,  19:07 Найти цитируемый пост)
Но вот в текущей проге что не так.Она ведь не работает.   

Потому и не работает, что книжек не читаете.
Этот код вешать надо на Edit1.OnKeyUp

Автор: Student00 7.3.2010, 19:21
Цитата(Proxin @ 7.3.2010,  19:14)
особенно под торренты с порнушкой играми книгами умными, наверное, работается хорошо.
вот код.
Код

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;ь Shift: TShiftState);
begin
button1.enabled:=edit1.text<>'';
end;

кнопка неактивна, если в edit ничего нет.

Ну торренты не торренты - это все фигня у меня качается фильм и когда он качается весь канал в мои скромные 256 килобит занят. прежде чем писать на форум я нажимаю паузу.

Но вот еще один скрин с вашим кодом:
и там же запущенная программа.

Добавлено через 8 минут и 5 секунд
Сейчас заметил одну простую вещь.
Ваш код, Proxin работает только после того как я запустив программу (курсор в Edit) нажимаю кнопку- стрелку вверх.
Тогда button1 действительно становится неактивной и активируется после ввода текста в поле.  smile

Добавлено через 12 минут и 55 секунд
Все, разобрался.
Даю последовательность:

На кнопку в свойстве enabled (в менюшке слева) ставим значение false.
И после этого прописываем код:
Код

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;ь Shift: TShiftState);
begin
button1.enabled:=edit1.text<>'';
end;

и тогда работает.

Всем, кто помогал, спасибо огромное.  smile  smile  smile 

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