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