Delphidə Form1-də PageControl1, PageControl1-in TTabSheet4-ində isə Edit1 və ListBox1 var.
Sual: Edit1 xanasına müyyən bir sətir yazıb, Enteri (#13) basdıqda ListBox1.Items.Add(Edit1.Text) etmək istəyirəm. Yığdığım kod aşağıdakı kimidir:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
ListBox1.Items.Add(Edit1.Text);
Edit1.Text:=”;
Edit1.SetFocus;
end;
end;
Kodda səhv yoxdur, ancaq bir əmma var. Sətri yığıb, Enteri basdıqda Form1 bağlanır. Niyə?!
Axı sətir siyahıya əlavə olunub, fokus almalıdır. Niyə Form1.Close?! Səbəbini bilən varmı?! Alternativ məsləhət verə də bilərsiniz…
Verilmiş cavablar və yazılan şərhlər (4 cavab var)
0
Siz olabisin ki, Form1-in keypreview xüsusiyyətini Object İnspectordan true eləmisiniz və programınızda bu şəkildə kodlama hissəsi var:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
/..başqa kodlar
close;
end;
Bunun nəticəsində formda hərhansı bir yerdə basılan düymə ilk olaraq Form1 tərəfindən analiz olunur,beləliklə form bağlanır.
0
Xeyr, o şəkildə kod proqramın heç bir yerində yoxdur, rahat olun. Close ilə bağlı yalnız bir prosedur var, o da “Çıxış” düyməsinin basılmasına reaksiya göstərir:
Maraqlıdır ki, bu fraqmenti sildikdə ümumiyyətlə, Enter düyməsinə reaksiya vermir proqram… Nə etməli?!
2
Sualı indi gördüm. Kodu olduğu kimi yoxladım, məndə heçbir problem çıxmadı. Proqramınızı tam olaraq mənə göndərsəniz incələyə bilərəm. ([email protected]) Və yeri gəlmişkən qeyd edim ki, belə hallarda onKeyPress yox onKeyDown olayına müraciət etməyiniz daha məqsədə uyğun olardı. Eyni kodları Edit-in onKeyDown olayında yazın, işləməlidir.
Problem editdə və list boxda deyil,
Siz o formda button qoymusuz və on button clickdə Close; əmri vermisiz, və bu düyməni default olaraq bu form üzərində hər hansı bir yerdə “Enter” sıxıldıqda bu düyməyə mürəciyyət olunmasını istəmizi, buna görədə siz editin daxilində enter sıxqıda form bağlanır.
Sual verin
Cavab verin