Fórum Por que o comando só funciona... ??? Alguém sabe? #147652

19/03/2003

0

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.


Anonymous

Anonymous

Responder

Posts

20/03/2003

Anonymous

:lol: Colega, somente duas perguntas:

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]


Responder

Gostei + 0

20/03/2003

Anonymous

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!


Responder

Gostei + 0

20/03/2003

E_gama

Vc está escrevendo um compoentente? Em que evento do componente vc está colocando o código ?


Responder

Gostei + 0

21/03/2003

Anonymous

: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]


Responder

Gostei + 0

21/03/2003

Anonymous

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!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar