Текущий архив: 2006.06.11;
Скачать: CL | DM;
Вниз
Срочно нужна помощь! Найти похожие ветки
← →
Adolf © (2006-05-22 00:58) [0]Люди, срочна нужна помощь в Делфи!Есть к примеру 10 компонентов EDIT я в них поставил максимальную длинну строки в один символ, а теперь мне нидо написать функчию "чтото типо автотаба" чтоб при заполнении одного компонента курсор автоматом переходил на на другой компонент!Заране спасибо!
← →
DevilDevil © (2006-05-22 01:15) [1]попробуй:
// TEdit.OnKeyPress
begin
SendMessage(Self.Handle, WM_CHAR, 9, 0);
end;
← →
Elen © (2006-05-22 08:37) [2]Попробуй эти Эдиты загнать в массив, тогда их будет легко контролировать.
Создай переменку в которую будет заноситься номер текушего Эдита и ты будеш знать на какой переходить потом
← →
Elen © (2006-05-22 09:05) [3]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure FormCreate(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var m:array[1..10] of tedit;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var k,i:byte;
begin k:=1;
for i :=0 to form1.ComponentCount -1 do
begin
if form1.Components [i] is Tedit then begin
m[k]:=tedit(form1.Components[i]);
m[k].Tag:=k+1;
inc(k);
end;
end;
m[k-1].Tag:=1;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
m[tedit(sender).tag].SetFocus;
end;
end;
end.
Edit2KeyPress задаеш для всех Эдитов
По Энтеру будет выбираться следующий Эдит
С последнего Эдита будет перескок на первый
← →
Adolf © (2006-05-22 09:21) [4]
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Variants, Classes, Graphics,
> Controls, Forms,
> Dialogs, ExtCtrls, StdCtrls;
>
> type
> TForm1 = class(TForm)
> Edit1: TEdit;
> Edit2: TEdit;
> Edit3: TEdit;
> procedure FormCreate(Sender: TObject);
> procedure Edit2KeyPress(Sender: TObject; var Key: Char);
>
> private
> { Private declarations }
> public
> { Public declarations }
> end;
> var m:array[1..10] of tedit;
> Form1: TForm1;
>
> implementation
>
> {$R *.dfm}
>
> procedure TForm1.FormCreate(Sender: TObject);
> var k,i:byte;
> begin k:=1;
> for i :=0 to form1.ComponentCount -1 do
> begin
> if form1.Components [i] is Tedit then begin
> m[k]:=tedit(form1.Components[i]);
> m[k].Tag:=k+1;
> inc(k);
> end;
> end;
> m[k-1].Tag:=1;
> end;
>
> procedure TForm1.Edit2KeyPress(Sender: TObject; var Key:
> Char);
> begin
> if key=#13 then
> begin
> m[tedit(sender).tag].SetFocus;
> end;
>
> end;
>
> end.
Не совсем то! я эотел чтоб автоматом переходило а не при нахатии на интер! это равносильно тому что я на таб жму!
← →
Elen © (2006-05-22 09:23) [5]Автоматом при каком условии?
← →
pavel_guzhanov © (2006-05-22 11:41) [6]
if length(Edit(i).text)=10 then
Edit(i+1).SetFocus
← →
pavel_guzhanov © (2006-05-22 11:47) [7]
> if length(Edit(i).text)=10 then
извиняюсь, не 10, а 1
← →
Плохиш © (2006-05-22 11:52) [8]
> Adolf © (22.05.06 00:58)
procedure TForm1.Edit1Change(Sender: TObject);
begin
if Sender is TEdit then
if Length(TEdit(Sender).Text) = 1 then
self.Perform(WM_NEXTDLGCTL, 0, 0);
end;
← →
Adolf © (2006-05-22 13:23) [9]
> procedure TForm1.Edit1Change(Sender: TObject);
> begin
> if Sender is TEdit then
> if Length(TEdit(Sender).Text) = 1 then
> self.Perform(WM_NEXTDLGCTL, 0, 0);
> end;
>
> <Цитата>
спасибо помогло!
Страницы: 1 вся ветка
Текущий архив: 2006.06.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.011 c