Добрый день! У меня небольшая проблема: есть Form и Label по середине. Нужно, чтобы при нажатии на этот Label пользователь ввел кнопку в пределах от 0 до 9. На языке Паскаля это будет выглядеть так:
Код
uses crt; var c:char; begin repeat c:=readkey; until (c>'0') and (c<'9'); end.
А как же это должно выглядеть на Делфи?
klem4
28.11.2006 20:08
В лейбл ничего вводить нельзся (label анг. метка) компонент служит для вывода информации, напиши точнее что тебе нужно, что за задание ?
в некоторых компонентах можно обрабатывать событие OnKeyPress (OnKeyDown) и анализировать в нем нажатую клавишу
S_lip
28.11.2006 22:03
klem4, спасибо за столь быстрый ответ! Вот точнее: как только на Label кликнули, его Caption становиться '?' и програма начинает ждать, пока пользователем не будет нажана клавиша в пределах от '0' до '9'. Когда это происходит, Label.Caption меняется на на нажатую цифру.
klem4
28.11.2006 22:27
Ну так и обрабатывай для Label1 событие OnClick, а для Form1 событие onKeyPress
procedure TForm1.Label1Click(Sender: TObject); begin Label1.Caption := '?'; end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if (Key in ['0'..'9']) then Label1.Caption := Key; end;
Гость
28.11.2006 23:10
А если Label'ов не один, а несколько, и при клике на любой из них нужнобудет ввести цифру??
waiting: tlabel; // <--- Ожидающий нажатия Label procedure get_ready(sender: tobject); public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
// Это то, что должно происходить по onClick на Label ... procedure tform1.get_ready(sender: tobject); var key: char; begin waiting := (sender as tlabel); waiting.Caption := '?'; end;
procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin // присвоить всем лейблам на форме нужный onClick ... for i := 0 to componentcount - 1 do if components[i] is tlabel then (components[i] as tlabel).OnClick := get_ready;
// Никто ничего не ждет, пока не выбран Label waiting := nil; end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if key in ['0' .. '9'] then if waiting <> nil then begin // Кто-то ждет нажатия ... waiting.Caption := key; waiting := nil; // Прекратить ожидание end; end;
end.
S_lip
29.11.2006 1:34
volvo, klem4, большое спасибо Вам за помошь!!! Всё работает!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.