Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
michael_jackson Membro Junior
Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Dom Out 12, 2014 10:27 am Assunto: código para componente do mesmo tipo |
|
|
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 |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1029 Localização: Cianorte-PR
|
Enviada: Dom Out 12, 2014 10:34 am Assunto: |
|
|
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 |
|
|
michael_jackson Membro Junior
Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Dom Out 12, 2014 12:18 pm Assunto: |
|
|
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 |
|
|
natanbh1 Colaborador
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Seg Out 13, 2014 10:43 am Assunto: |
|
|
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 |
|
|
michael_jackson Membro Junior
Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Seg Out 13, 2014 11:09 am Assunto: |
|
|
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 |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1029 Localização: Cianorte-PR
|
Enviada: Seg Out 13, 2014 1:57 pm Assunto: |
|
|
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 |
|
|
michael_jackson Membro Junior
Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Seg Out 13, 2014 3:09 pm Assunto: |
|
|
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 |
|
|
michael_jackson Membro Junior
Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Ter Out 14, 2014 11:00 am Assunto: |
|
|
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 |
|
|
michael_jackson Membro Junior
Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Qua Out 15, 2014 10:39 am Assunto: |
|
|
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 |
|
|
natanbh1 Colaborador
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qua Out 15, 2014 1:19 pm Assunto: |
|
|
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 |
|
|
michael_jackson Membro Junior
Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Qua Out 15, 2014 1:35 pm Assunto: |
|
|
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 |
|
|
michael_jackson Membro Junior
Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Qua Out 15, 2014 1:45 pm Assunto: |
|
|
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 |
|
|
natanbh1 Colaborador
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qua Out 15, 2014 2:32 pm Assunto: |
|
|
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 |
|
|
michael_jackson Membro Junior
Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Qua Out 15, 2014 5:45 pm Assunto: |
|
|
assim funcionou |
|
Voltar ao Topo |
|
|
michael_jackson Membro Junior
Registrado: Quarta-Feira, 17 de Fevereiro de 2010 Mensagens: 393
|
Enviada: Qua Out 15, 2014 9:09 pm Assunto: |
|
|
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 |
|
|
|