![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Написал инструкцию типа
Код:
begin
if key=#13
then
begin
if length(edit1.text)=0
then edit1.setfocus
else
begin
if length(edit2.text)=0
then edit2.setfocus
else
begin
if length(edit3.text)=0
then edit3.setfocus
else button2.setfocus;
end;
end;что хочу сделать: 1) засунуть данную инструкцию в модуль 2) расписать ее более красиво что получилось модуль: Код:
procedure setfocus_edits_button(edits_on_form:array of tedit; button_on_form:tbutton);
var
i:integer;
status:bolean;
begin
status:=true;
for i:=1 to hight(edits_on_form) do
begin
if length(edits_on_form[i].text)=0
then
begin
edits_on_form[i].setfocus;
status:=false;
continue
end
else status:=true;
end;
if status=true
then button_on_form.setfocus;
end;Код:
begin
if key=#13
then setfocus_edits_button([edit1,edit2,edit3],button1);
end;в итоге ошибки: в модуле компилятор не понимает Tedit и tbutton подскажите где ошибки, может можно как то более рационально прописать инструкции: что должно получиться 1) инструкция должна быть прописана в модуле 2) она должна проверять пустые edit'ы и на них фокусироваться пока е заполнит оператор, в случае если они заполнены фокусируется на след объекте - кнопка например спасибо)) Последний раз редактировалось Bargest, 02.09.2012 в 13:39. |
|
#2
|
||||
|
||||
|
Код:
unit emptyFoc;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
procedure focusEdit(component:TComponent);
implementation
procedure focusEdit(component:TComponent);
var i:Integer;
begin
for i:=0 to component.ComponentCount-1 do begin
if component.Components[i].ClassType=TEdit then begin
if Length((component.Components[i] as TEdit).Text)=0 then begin
(component.Components[i] as TEdit).SetFocus;
exit;
end;
end;
end;
end;
end.Код:
Application.ProcessMessages |
| Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
Pavel_Aleksandrovich (03.09.2012)
| ||
|
#3
|
||||
|
||||
|
Цитата:
Application.HandleMessages. |
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Pavel_Aleksandrovich (03.09.2012)
| ||
|
#4
|
|||
|
|||
|
Цитата:
а тип tcomponent зарезервирован в delphi? или его надо объявлять? |
|
#5
|
||||
|
||||
|
Цитата:
|
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Pavel_Aleksandrovich (03.09.2012)
| ||
|
#6
|
||||
|
||||
|
Лучше сделать так:
Код:
function focusEdit(component:TComponent):boolean;
var i:Integer;
begin
for i:=0 to component.ComponentCount-1 do begin
if component.Components[i].ClassType=TEdit then begin
if Length((component.Components[i] as TEdit).Text)=0 then begin
(component.Components[i] as TEdit).SetFocus;
result:=true;
exit;
end;
end;
end;
for i:=0 to component.ComponentCount-1 do
if focusEdit(component.Components[i]) then begin
result:=true;
exit;
end;
result:=false;
end;так будет искать по всех контролах на форме (панелях и тп). Лучше сделать так: Выбрать все TEdit (с помощью клавиши SHIFT), и задать им один обработчик OnKeyDown на всех: Код:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_Return then focusEdit(Form1); end; |
| Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
Pavel_Aleksandrovich (03.09.2012)
| ||
|
#7
|
|||
|
|||
|
Код:
procedure Form4.FormCreate(Sender: TObject);
begin
label1.Caption:='Исходные данные:'+#13+'Университет:'+#32+
Unit1.Form1.RadioButton1.Caption+#13+'Фамилия:'+#32+
Unit2.Form2.Edit1.Text+#13+'имя:'+#32+Unit2.Form2.Edit2.Text+
#13+'отчество:'+#32+Unit2.Form2.Edit3.Text;
end;Почему то Label не отобажает ни один Edit.Text может быть причина в том что я ни в одной форме не определяю переменные, и не присваиваю им значения edit.text Подскажите в чем нюанс? Последний раз редактировалось Pavel_Aleksandrovich, 03.09.2012 в 22:32. |
|
#8
|
||||
|
||||
|
Попробуй перенести из OnCreate в OnShow. При создании данной формы, остальные могли не успеть проинициализироваться.
|
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Pavel_Aleksandrovich (04.09.2012)
| ||
|
#9
|
|||
|
|||
|
Цитата:
точно сработало |