Por que o comando só funciona... ??? Alguém sabe?
Pessoal, alguém sabe me dizer porque será que esses comandos só funcionam se eu usa-los em tempo de projeto, pois quero colocar no código fonte do meu componente mas nenhum dos dois funciona!
SelectNext(Screen.ActiveControl, True, True);
ou
Perform(WM_NEXTDLGCTL, 0, 0);
Desde já agradeço,
ass: Milton Júnior.
SelectNext(Screen.ActiveControl, True, True);
ou
Perform(WM_NEXTDLGCTL, 0, 0);
Desde já agradeço,
ass: Milton Júnior.
Anonymous
Curtidas 0
Respostas
Anonymous
19/03/2003
:lol: Colega, somente duas perguntas:
1-Setou a propriedade KeyPreview do form para True?
2- Colocou no evento OnKeyPress do form?
:arrow: Obs.:
Espero que dê certo... :oops: :?:
[quote:2398250273=´Milton Júnior´]Pessoal, alguém sabe me dizer porque será que esses comandos só funcionam se eu usa-los em tempo de projeto, pois quero colocar no código fonte do meu componente mas nenhum dos dois funciona!
SelectNext(Screen.ActiveControl, True, True);
ou
Perform(WM_NEXTDLGCTL, 0, 0);
Desde já agradeço,
ass: Milton Júnior.[/quote:2398250273]
1-Setou a propriedade KeyPreview do form para True?
2- Colocou no evento OnKeyPress do form?
:arrow: Obs.:
If (Key = #13) Then Begin Key := 0; Perform(Wm_NextDlgCtl,0,0); End;
Espero que dê certo... :oops: :?:
[quote:2398250273=´Milton Júnior´]Pessoal, alguém sabe me dizer porque será que esses comandos só funcionam se eu usa-los em tempo de projeto, pois quero colocar no código fonte do meu componente mas nenhum dos dois funciona!
SelectNext(Screen.ActiveControl, True, True);
ou
Perform(WM_NEXTDLGCTL, 0, 0);
Desde já agradeço,
ass: Milton Júnior.[/quote:2398250273]
GOSTEI 0
Anonymous
19/03/2003
Star, fiz o que você disse, setei o KeyPreview para True e coloquei no KeyPress mas nada adiantou. Já não sei mais o que fazer!
GOSTEI 0
E_gama
19/03/2003
Vc está escrevendo um compoentente? Em que evento do componente vc está colocando o código ?
GOSTEI 0
Anonymous
19/03/2003
:shock:
Milton, só mais uma :?: Tem certeza que está colocando no OnKeyPress do [b:1a1ac2eabf][u:1a1ac2eabf]FORM[/b:1a1ac2eabf][/u:1a1ac2eabf] :?: :?:
Até.
[quote:1a1ac2eabf=´Milton Júnior´]Star, fiz o que você disse, setei o KeyPreview para True e coloquei no KeyPress mas nada adiantou. Já não sei mais o que fazer![/quote:1a1ac2eabf]
Milton, só mais uma :?: Tem certeza que está colocando no OnKeyPress do [b:1a1ac2eabf][u:1a1ac2eabf]FORM[/b:1a1ac2eabf][/u:1a1ac2eabf] :?: :?:
Até.
[quote:1a1ac2eabf=´Milton Júnior´]Star, fiz o que você disse, setei o KeyPreview para True e coloquei no KeyPress mas nada adiantou. Já não sei mais o que fazer![/quote:1a1ac2eabf]
GOSTEI 0
Anonymous
19/03/2003
No OnKeyPress do Form não, eu quero coloca-lo no font do meu componente. Já tentei tanto no OnKeyPress quanto no OnChange mas não funcionou em nenhum dos dois!
Vejam o código completo do componente:
unit EditData;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TEditData = class(TEdit)
private
FData: string;
FValidData: Boolean;
protected
function VerData(data: string): Boolean;
procedure SetVerData(Value: string);
procedure KeyPress(var Key: Char); override;
procedure Change; override;
public
constructor Create(AOwner: TComponent); override;
published
end;
procedure Register;
implementation
constructor TEditData.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
MaxLength := 8;
end;
procedure TEditData.SetVerData(Value: string);
begin
FData := Value;
FValidData := VerData(FData);
end;
function TEditData.VerData(data: string): Boolean;
begin
try
StrToDate(data);
Result := True;
except
Result := False;
end;
end;
procedure TEditData.KeyPress(var Key: Char);
begin
if Length(Text)=8 then
SetVerData(Self.Text);
if (FValidData) then begin
SelectNext(Screen.ActiveControl, True, True); //não funciona
// Perform(WM_NEXTDLGCTL, 0, 0); //não funciona
ShowMessage(´msg´); //funciona
end;
inherited KeyPress(Key);
end;
procedure TEditData.Change;
begin
// inherited Change;
// if not(csDesigning in ComponentState) then
// if Length(Text)=8 then
// SetVerData(Self.Text);
// if (FValidData) then begin
// SelectNext(Screen.ActiveControl, True, True); //não funciona
// Perform(WM_NEXTDLGCTL, 0, 0); //não funciona
// ShowMessage(´msg´); //funciona
// end;
end;
procedure Register;
begin
RegisterComponents(´Componentes´, [TEditData]);
end;
end.
OBS.: qualquer comando que eu colocar dentro do if é executado normalmente(o ShowMessage por exemplo), então porque o SelectNext ou o Perform não funcionam??? :x
É isso que está me deixando irritado.
Ainda tenho esperança que alguém saiba resolver essa!
Vejam o código completo do componente:
unit EditData;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TEditData = class(TEdit)
private
FData: string;
FValidData: Boolean;
protected
function VerData(data: string): Boolean;
procedure SetVerData(Value: string);
procedure KeyPress(var Key: Char); override;
procedure Change; override;
public
constructor Create(AOwner: TComponent); override;
published
end;
procedure Register;
implementation
constructor TEditData.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
MaxLength := 8;
end;
procedure TEditData.SetVerData(Value: string);
begin
FData := Value;
FValidData := VerData(FData);
end;
function TEditData.VerData(data: string): Boolean;
begin
try
StrToDate(data);
Result := True;
except
Result := False;
end;
end;
procedure TEditData.KeyPress(var Key: Char);
begin
if Length(Text)=8 then
SetVerData(Self.Text);
if (FValidData) then begin
SelectNext(Screen.ActiveControl, True, True); //não funciona
// Perform(WM_NEXTDLGCTL, 0, 0); //não funciona
ShowMessage(´msg´); //funciona
end;
inherited KeyPress(Key);
end;
procedure TEditData.Change;
begin
// inherited Change;
// if not(csDesigning in ComponentState) then
// if Length(Text)=8 then
// SetVerData(Self.Text);
// if (FValidData) then begin
// SelectNext(Screen.ActiveControl, True, True); //não funciona
// Perform(WM_NEXTDLGCTL, 0, 0); //não funciona
// ShowMessage(´msg´); //funciona
// end;
end;
procedure Register;
begin
RegisterComponents(´Componentes´, [TEditData]);
end;
end.
OBS.: qualquer comando que eu colocar dentro do if é executado normalmente(o ShowMessage por exemplo), então porque o SelectNext ou o Perform não funcionam??? :x
É isso que está me deixando irritado.
Ainda tenho esperança que alguém saiba resolver essa!
GOSTEI 0