ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

código para componente do mesmo tipo
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Dom Out 12, 2014 10:27 am    Assunto: código para componente do mesmo tipo Responder com Citação

como que faz para fazer esse código funcionar para todos os componentes do tipo dbrichedit?

Para mim não precisar fazer um para cada componente, pois tenho vários dbrichedit no form

Código:
if fntdlgFormatacao.Execute then
 begin
   with dbrchdtProprietarios do
   begin
     SelAttributes.Name  := fntdlgFormatacao.Font.Name;
     SelAttributes.Style := fntdlgFormatacao.Font.Style;
     SelAttributes.Color := fntdlgFormatacao.Font.Color;
     SelAttributes.Size  := fntdlgFormatacao.Font.Size;
   end;

 end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1029
Localização: Cianorte-PR

MensagemEnviada: Dom Out 12, 2014 10:34 am    Assunto: Responder com Citação

Oi, faz um loop For:
Código:

 for I := 0 to ComponentCount - 1 do
   //tratando TDBedit
   if Components [I] is TDBEdit then
   begin
     TDBEdit(Components[I]).OnEnter:=//faz algo;
     TDBEdit(Components[I]).OnExit:=//faz algo;
   end

att,
Anderson.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Dom Out 12, 2014 12:18 pm    Assunto: Responder com Citação

eu fiz assim, mas deve estar errado pq não funcionou,

o popup está ligado nos dbrichedit e no evento onPopup do popup coloquei esse código

Código:
procedure TfrmEdicaoContrato.pmnFormatacaoPopup(Sender: TObject);
var
  i : Integer;
begin


 for i:= 0 to ComponentCount-1 do
 begin
   if Components [i] is TDBRichEdit then
   begin
     TDBRichEdit(Components[i]).SelAttributes.Name  := fntdlgFormatacao.Font.Name;
     TDBRichEdit(Components[i]).SelAttributes.Style := fntdlgFormatacao.Font.Style;
     TDBRichEdit(Components[i]).SelAttributes.Color := fntdlgFormatacao.Font.Color;
     TDBRichEdit(Components[i]).SelAttributes.Size  := fntdlgFormatacao.Font.Size;
   end;

 end;

end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Out 13, 2014 10:43 am    Assunto: Responder com Citação

Experimente "Selecionar tudo" no componente antes de aplicar as formatações:

Código:

var
  i : Integer;
begin
 for i:= 0 to ComponentCount-1 do
 begin
   if Components [i] is TDBRichEdit then
   begin
     TDBRichEdit(Components[i]).SelectAll; // Acrescente esta linha
     TDBRichEdit(Components[i]).SelAttributes.Name  := fntdlgFormatacao.Font.Name;
     TDBRichEdit(Components[i]).SelAttributes.Style := fntdlgFormatacao.Font.Style;
     TDBRichEdit(Components[i]).SelAttributes.Color := fntdlgFormatacao.Font.Color;
     TDBRichEdit(Components[i]).SelAttributes.Size  := fntdlgFormatacao.Font.Size;
   end;
 end;
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Seg Out 13, 2014 11:09 am    Assunto: Responder com Citação

eu estava esquecendo de colocar essa linha, pq só iria chamar o código se
executar o fontdialog

Código:
if fntdlgFormatacao.Execute then



ai funcionou, mas não estão muito legal não pq se eu seleciono uma palavra e coloco uma cor diferente, etc, funciona,

mas dependendo do caso, quando seleciono outra parte do texto mesmo que seja de outro dbrichedit, muda o formato do texto anterior que foi selecionado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1029
Localização: Cianorte-PR

MensagemEnviada: Seg Out 13, 2014 1:57 pm    Assunto: Responder com Citação

michael_jackson escreveu:
eu estava esquecendo de colocar essa linha, pq só iria chamar o código se
executar o fontdialog

Código:
if fntdlgFormatacao.Execute then



ai funcionou, mas não estão muito legal não pq se eu seleciono uma palavra e coloco uma cor diferente, etc, funciona,

mas dependendo do caso, quando seleciono outra parte do texto mesmo que seja de outro dbrichedit, muda o formato do texto anterior que foi selecionado.


E se vc criar um .Ini com os parâmetros para cada RichEdit.
Faz o código como vc já esta fazendo e controla o Nome de cada componente setando os parâmetros salvos no .Ini deixando a possibilidade de alterar esses parâmetros.

att,
Anderson.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Seg Out 13, 2014 3:09 pm    Assunto: Responder com Citação

vou ter que fazer isso, tipo uma barra de formatação





carregar as fontes e os tamanhos da fontes do windows nas combobox e

colocar o estilos de fonte e alinhamento nos botões
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Ter Out 14, 2014 11:00 am    Assunto: Responder com Citação

fiz o codigo para o negrito, itálico e sublinhado

só que esta dando problema, se eu coloco um palavra em itálico em um richedit, e vou e seleciono outra palavra em outro richedit e coloco por exemplo em negrito, o que estava em italico no outro richedit tbm esta ficando negrito.

acho que é alguma coisa a ver com a seleção,

Código:
//itálico
procedure TfrmEdicaoContrato.spdbtnItalicoClick(Sender: TObject);
var
  i : Integer;
begin
 for i:= 0 to ComponentCount-1 do
 begin
   if Components [i] is TDBRichEdit then
   begin
     if (fsItalic in TDBRichEdit(Components[i]).SelAttributes.Style) then
     begin
       TDBRichEdit(Components[i]).SelAttributes.Style := TDBRichEdit(Components[i]).SelAttributes.Style - [fsItalic];
     end
     else
     begin
       TDBRichEdit(Components[i]).SelAttributes.Style := TDBRichEdit(Components[i]).SelAttributes.Style + [fsItalic];
     end;
   end;

 end;

end;



//negrito
procedure TfrmEdicaoContrato.spdbtnNegritoClick(Sender: TObject);
var
  i : Integer;
begin
 for i:= 0 to ComponentCount-1 do
 begin
   if Components [i] is TDBRichEdit then
   begin
     if (fsBold in TDBRichEdit(Components[i]).SelAttributes.Style) then
     begin
       TDBRichEdit(Components[i]).SelAttributes.Style := TDBRichEdit(Components[i]).SelAttributes.Style - [fsBold];
     end
     else
     begin
       TDBRichEdit(Components[i]).SelAttributes.Style := TDBRichEdit(Components[i]).SelAttributes.Style + [fsBold];
     end;
   end;

 end;

end;



//sublinhado
procedure TfrmEdicaoContrato.spdbtnSublinhadoClick(Sender: TObject);
var
  i : Integer;
begin
 for i:= 0 to ComponentCount-1 do
 begin
   if Components [i] is TDBRichEdit then
   begin
     if (fsUnderline in TDBRichEdit(Components[i]).SelAttributes.Style) then
     begin
       TDBRichEdit(Components[i]).SelAttributes.Style := TDBRichEdit(Components[i]).SelAttributes.Style - [fsUnderline];
     end
     else
     begin
       TDBRichEdit(Components[i]).SelAttributes.Style := TDBRichEdit(Components[i]).SelAttributes.Style + [fsUnderline];
     end;
   end;

 end;

end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Qua Out 15, 2014 10:39 am    Assunto: Responder com Citação

coloquei esse código para centralizar o texto, porém o esquema de formatar somente o dbrichedit que eu estiver usando não esta funcionando, se eu mudo o alinhamento, esta mudando de todos os outros



Código:
//centralizado
procedure TfrmEdicaoContrato.spdbtnCentralizadoClick(Sender: TObject);
var
  i : Integer;
begin
 for i:= 0 to ComponentCount-1 do
 begin
   if Components [i] is TDBRichEdit then
   begin
     TDBRichEdit(Components[i]).Paragraph.Alignment := taCenter;
   end;

 end;

end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Out 15, 2014 1:19 pm    Assunto: Responder com Citação

No seu primeiro post, você pede para aplicar as mudanças em todos os dbrichedit:

Citação:

como que faz para fazer esse código funcionar para todos os componentes do tipo dbrichedit?

Para mim não precisar fazer um para cada componente, pois tenho vários dbrichedit no form


Por isso foi lhe sugerido o "For" em todos os DBRichEdit.

Se você quer aplicar as mudanças em apenas um DBRichEdit você pode criar uma procedure para isso com parâmetro o nome do DBRichEdit. Exemplo:

Código:

//centralizado
procedure Centralizado(DBRichEdit: TDBRichEdit);
begin
   DBRichEdit.Paragraph.Alignment := taCenter;
end;


Para chamar a procedure no botão:

Código:

 Centralizado(DBRichEdit1); // Troque DBRichEdit1 pelo nome do DBRichEdit que queira formatar;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Qua Out 15, 2014 1:35 pm    Assunto: Responder com Citação

talvez eu não tenha me expressado bem

mas o que preciso é um código que servisse para todos os dbrichedt,
mas que eu pudesse manipula-los de forma independente.


mas vou testar aqui o lance dessa procedure
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Qua Out 15, 2014 1:45 pm    Assunto: Responder com Citação

eu entendi o procedimento, mas não entendi como que vou passar o nome do dbrichedit que eu estiver manipulando quando clicar no botão centralizar


vai ser algo do tipo o dbrichedit que estiver com o foco?


Código:
Centralizado(DBRichEdit1); // Troque DBRichEdit1 pelo nome do DBRichEdit que queira formatar;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Out 15, 2014 2:32 pm    Assunto: Responder com Citação

O DBRichEdit que estiver com foco não dá pois quando você clicar no botão o foco não estará no DBRichEdit e sim no botão clicado.

Tenta fazer assim:

Crie uma variável Global para armazenar o DBRichEdit clicado
Código:

var
  Objeto: TObject;


Modifique a procedure para ficar assim:
Código:

procedure Centralizado(DBRichEdit: TDBRichEdit);
begin
  if Objeto is TDBRichEdit then
  DBRichEdit.Paragraph.Alignment := taCenter;
end;


No evento OnEnter do primeiro DBRichEdit
Código:

procedure Tform1.DBRichEdit1Enter(Sender: TObject);
begin
  Objeto:= ActiveControl;
end;


No botão você chama assim:
Código:

Centralizado(TDBRichEdit(Objeto));


Selecione cada DBRichEdit e sete o evento OnEnter do primeiro DBRichEdit1 que você programou acima.

Explicando: A variável global vai armazenar o DBRichEdit clicado. Aplicando a procedure apenas nele.
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Qua Out 15, 2014 5:45 pm    Assunto: Responder com Citação

assim funcionou
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
michael_jackson
Membro Junior
Membro Junior


Registrado: Quarta-Feira, 17 de Fevereiro de 2010
Mensagens: 393

MensagemEnviada: Qua Out 15, 2014 9:09 pm    Assunto: Responder com Citação

o negrito, itálico e sublinhado preciso fazer uma verificação, vou usar o negrito como exemplo

se eu selecionar parte e clicar no botão negrito, se não estiver em negrito,
então tem que ficar em negrito,

agora se eu seleciono uma parte que já esta em negrito e clico no botão negrito, então tem que retirar o negrito do texto.


Código:
//negrito
procedure TfrmEdicaoContrato.negrito(DBRichEdit: TDBRichEdit);
begin
  if Objeto is TDBRichEdit then
  begin
    if (fsBold in TDBRichEdit.SelAttributes.Style) then
    begin
      DBRichEdit.SelAttributes.Style := DBRichEdit.SelAttributes.Style - fsBold;
    end
    else
    begin
      DBRichEdit.SelAttributes.Style := DBRichEdit.SelAttributes.Style + fsBold;
    end;
  end;
end;



o erro esta dando nessa linha

Código:
 if (fsBold in TDBRichEdit.SelAttributes.Style) then
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB