Problema para dar focus no edit
02/08/2008
0
****************** FORME PRINCIPAL ****************
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.FormActivate(Sender: TObject); begin Application.CreateForm(TForm2, Form2); Form2.ShowModal; Form2.Destroy; end; end.
*****FORME SECUNDARIO AONDE NAO CONSIGO DAR FOCO NO EDIT*********
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Edit: TEdit; CTRL: TEdit; procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation uses Unit1; {$R *.dfm} procedure TForm2.FormActivate(Sender: TObject); begin Edit.SetFocus; end; end.
*****************OU CHAMNDO O FORME DESTA MANEIRA *********
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.FormActivate(Sender: TObject); begin Form2.Create(Application); try Form2.ActiveControl := Form2.Edit; Form2.ShowModal; finally Form2.Free; end; end;
ESTA ULTIMA DA UM ERRO DE ACCESS VIOLATION.
Serpentedodeserto
Posts
02/08/2008
Marco Salles
var form2:Tform2; begin form2:=TForm2.Create(nil); try form2.showmodal; finally form2.release; end;
[b:043ee7c499]claro com o Form2 na secção Avalaible AutoForms em Projecto Optioons[/b:043ee7c499]
voce não tera problema Nunca para qualquer delphi
E alem disso voce pode focar O edit em qualquer evento
FormShow do form2 ou FormActivate do form2 com voce fez antes
exceto é claro o evento OnCreate do Form2
p:s)
não necessariamente voce precisará da instrução
Form2.ActiveControl := Form2.Edit1;
abaixo da instrução Try como voce postou por ultimo
Para falar a verdade isto nen é muito correto [u:043ee7c499]na minha Opinião [/u:043ee7c499], não é porque não funcione , mas não se deve ficar misturando objetos pertencentes a formuálrios diferentes ...Voce vai ver isto mais tarde quanto se aprofundar em POO
outra coisa so para finalizar . Se voce fez referencia a unit2 no uses do Form1 não precisa fazer referencia a unit do form1 na uses do form2
espero ter sido claro..
02/08/2008
Serpentedodeserto
var form2:Tform2; begin form2:=TForm2.Create(nil); try form2.showmodal; finally form2.release; end;
Muito Obrigado pela atenção a sua sugestão foi de grande valia, em referencia ao codigo que foi postado acabou apurando o que tinha criado, mais a solução vei depois que alterei a linha no ´Project -> Veiw Source ´
"Application.MainFormOnTaskbar := True;"
"Application.MainFormOnTaskbar := False;"
E se poder me da uma luz do que se trata fico agradecido, mais o problema ja foi resolvido sem memsmo saber o que fiz ao certo...ahahahahhahahaha.
UM abraço e obrigado novamente pela ajuda
02/08/2008
Marco Salles
Eu ja li não sei se é verdade quando voce compila um projeto antigo do delphi para o 2007 e vai rodar no windows Vista voce tem que acrescentar Application.MainFormOnTaskbar: = True;.
não uso vista e nen delphi2007 . então não passei por problemas quanto a esta propriedade.
Eu estive obesrvando o seu codigo e acho que a instrução
Form2.Create(Application); deve dar erro de acesso , pq a mesma deveria ser escrita desta forma
TForm2.Create(Application); que cria um ponteiro para o formulário
Apesar de como eu disse , que a opção de criar uma instancia de Formulario é aquela a qua lhe passei.
Mas ajufa a gente aqui ... Voce esta usando WindowsVista ???
Pq também ja li a respeito que colocar
Application.MainFormOnTaskbar: = false;
o Aplicativo n;ao aparece na Barra de Tarefas .... Isto aconteceu com Voce ????
Clique aqui para fazer login e interagir na Comunidade :)