|
#1
|
|||
|
|||
TEdit
Глупый вопрос: как проверить пустоту поля 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; Поживу - увижу, Доживу - узнаю, Выживу - учту. [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#10
|
|||
|
|||
Большое спасибо за советы!
|
#11
|
|||
|
|||
Не подскажите, каким кодом из таблицы ANSI записывают клавишу "пробел/space"? спасибо)
|
#12
|
|||
|
|||
код пробела -32
|
#13
|
||||
|
||||
Узнать код любой клавиши можно получить так
Код:
Ord(' ');// Вместо ' ' пиши символ, код которого тебе нужен Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#14
|
|||
|
|||
Спасибо, ребята!
|