![]() |
|
|
#1
|
|||
|
|||
|
Глупый вопрос: как проверить пустоту поля TEdit ?
|
|
#2
|
||||
|
||||
|
if Edit1.Text = '' then ShowMessage( 'Пусто' );
if Length( Edit1.Text ) = 0 then ShowMessage( 'Тоже пусто' ); |
|
#3
|
|||
|
|||
|
хочу реализовать задачку: на форме расположены компоненты TEdit, TButton, TLabel. В поле TEdit вводят нестандартные символы / \ + - 0 1. При правильном вводе этой комбинации и нажатии кнопки Button - выводится утвердительное сообщение. Если комбинация приведена неправильно - выводится отрицательное сообщение на Label.
Реализовала подобную задачку с помощью процедур ButtonClick и EditKeypress ( для численных комбинаций). Но для ввода нестандартных символов EditKeypress и переменная integer не подойдут. Вроде бы необходимо использовать переменную string, но возникают вопросы: 1) Какую процедуру использовать вместо EditKeypress? 2) чему присваивать x? (StrToInt не подойдет) 3) в программе прописывать нестандартные символы виртуальным кодом клавиш? Например \ как #220: 4)условие if (x=/ \ + - 0 1 ) then прописывать тоже в виде виртуального кода? Надеюсь на ответ :-) Код:
unit wind3_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Jpeg, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
x: integer;
begin
if Length(Form1.Edit1.Text) = 0 then
begin
ShowMessage('No! ');
exit;
end;
x := StrToInt(Form1.Edit1.Text);
if (x=132) then
begin
Form1.Label1.Caption :=' Yes!' ;
end
else
Form1.Label1.Caption :='No! ';
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// #8 - <Backspace>
// #13 - <Enter>
case Key of
'0'..'9',#8: ;
else Key := Chr(0);
end;
end;
end.Последний раз редактировалось ariane, 10.04.2008 в 12:17. |
|
#4
|
|||
|
|||
|
Цитата:
До конца не понимаю. Задача вроде простая, а вы вроде пошли сложным путем. Или сама задача неправильно описана. Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.Text = '/ \ + - 0 1' then
label1.Caption:='super super '
else
label1.Caption:='Oi, ne super'
end; |
|
#5
|
|||
|
|||
|
но описывать символы, которые вводятся в поле Edit вроде бы необходимо. К тому же процедура EditKey... фильтрует нажатие других клавиш, чтобы не вводить посторонние символы. То есть я могу вообще обойтись без процедуры EditKey....?
|
|
#6
|
|||
|
|||
|
Цитата:
Т.е. вам нужно, чтобы можно было вводить только определенные символы? |
|
#7
|
|||
|
|||
|
Желательно, да! Это ограничивающий фактор, иначе некоторые товарищи будут сидеть до вечера, пока не введут правильную комбинацию. Переберут все буквы, цифры)
|
|
#8
|
|||
|
|||
|
Цитата:
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin If Key in ['A'..'z'] Then Key := #0; end; |
|
#9
|
||||
|
||||
|
Цитата:
В данном случае целесообразно будет сочетание метода case ... of и проверки от MegaPiha. Примерно так: Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin case Key of '0'..'9',#8,#47,#92,#43,#45 :; else Key:=Chr(0); end; end; Код:
procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text = '/ \ + - 0 1' then Label1.Caption:='super super ' else Label1.Caption:='Oi, ne super' end; |
|
#10
|
|||
|
|||
|
Большое спасибо за советы!
![]() |
|
#11
|
|||
|
|||
|
Не подскажите, каким кодом из таблицы ANSI записывают клавишу "пробел/space"? спасибо)
|
|
#12
|
|||
|
|||
|
код пробела -32
|
|
#13
|
||||
|
||||
|
Узнать код любой клавиши можно получить так
Код:
Ord(' ');// Вместо ' ' пиши символ, код которого тебе нужен |
|
#14
|
|||
|
|||
|
Спасибо, ребята!
![]() |