Mouse não funciona no PageControl
25/03/2018
0
Marcello Assumpção
Posts
28/03/2018
Fabricio Kawata
<br />
var<br />
MeuForm : TForm2;<br />
MeuTabSheet : TTabSheet;<br />
begin<br />
// Cria e incorpora a TabSheet ao PageControl existente<br />
MeuTabSheet := TTabSheet.Create(PageControl1);<br />
MeuTabSheet.PageControl := PageControl1;<br />
<br />
// Cria o Form e o incorpora à TabSheet criada<br />
MeuForm := TForm2.Create(MeuTabSheet);<br />
MeuForm.Parent := MeuTabSheet;<br />
MeuForm.Align := alClient;<br />
MeuForm.BorderStyle := bsNone;<br />
MeuForm.Visible := true;<br />
MeuTabSheet.Caption := MeuForm.Caption;<br />
<br />
PageControl1.ActivePage := MeuTabSheet;<br />
end;<br />
<br />
Seguindo por essa linha, você verá que o Form é inteiramente incorporado à TabSheet, habilitando assim todos os devidos controles de mouse e teclado providos pelo Windows.<br />
<br />
Espero ter te ajudado.<br />
<br />
Abraço e bons desenvolvimentos!
28/03/2018
Fabricio Kawata
var
MeuForm : TForm2;
MeuTabSheet : TTabSheet;
begin
// Cria e incorpora a TabSheet ao PageControl existente
MeuTabSheet := TTabSheet.Create(PageControl1);
MeuTabSheet.PageControl := PageControl1;
// Cria o Form e o incorpora à TabSheet criada
MeuForm := TForm2.Create(MeuTabSheet);
MeuForm.Parent := MeuTabSheet;
MeuForm.Align := alClient;
MeuForm.BorderStyle := bsNone;
MeuForm.Visible := true;
MeuTabSheet.Caption := MeuForm.Caption;
PageControl1.ActivePage := MeuTabSheet;
end;
Seguindo por essa linha, você verá que o Form é inteiramente incorporado à TabSheet, habilitando assim todos os devidos controles de mouse e teclado providos pelo Windows.
Espero ter te ajudado.
Abraço e bons desenvolvimentos!
29/03/2018
Marcello Assumpção
Primeiro, eu fiz um exemplo simples, conforme seu modelo mas ainda assim o problema persiste, não altera a ocorrência do problema...
Eu fiz esses testes no Delphi 10 Seattle.
Já no meu projeto mesmo, o código é ligeiramente diferente, mas tudo funciona como no exemplo. Segue abaixo meu código:
//------------------------------------------------------------------------------
tsPrincipal := TTabSheet.Create(pcPrincipal);
tsPrincipal.Name := 'tsENTRADAS';
tsPrincipal.Caption := 'Entradas';
tsPrincipal.PageControl := pcPrincipal;
//------------------------------------------------------------------------------
frmEntradas := TfrmEntradas.create(self,LModulo);
frmEntradas.Parent := tsPrincipal;
frmEntradas.show;
frmEntradas.WindowState := wsMaximized;
frmEntradas.Align := alClient;
pcPrincipal.ActivePageIndex := pcPrincipal.ComponentCount;
O formulário é criado perfeito, funcionando ok. Ainda crio uma cópia do DataModule no formshow.
Ainda assim, o mouse não traz o foco em alguns componentes, especificamente nos de entrada de dados digitados. Ele provoca a entrada no componente, mas isso não se reflete na tela. O cursor não pisca e não habilita a edição. Eu contornei o problema no onclick do componente, forçando o foco e selecionando para por o cursor no final da seleção, usando o código abaixo:
if (Sender is TMaskEdit) then
begin
if not (Sender as TMaskEdit).Focused then
(Sender as TMaskEdit).SetFocus;
(Sender as TMaskEdit).SelStart := (Sender as TMaskEdit).SelLength + 1
end
Ficou 90% bom. Ainda não consigo clicar no meio do texto e lá posicionar o cursor.
Clique aqui para fazer login e interagir na Comunidade :)