Ir para conteúdo
Fórum Script Brasil
  • 0

Pegar formatação em um TwebBrowser


qlale

Pergunta

Boa tarde amigos... sou novo aqui no site, prazer em conhece-los.

Preciso de uma grande ajuda.

Estou desenvolvendo um aplicativo de help para minha empresa e o desenvolvi utilizando Delphi 2010.

Utilizo o componente TwebBrowser, porém após formatar um texto, por exemplo que eu tenha deixado na cor vermelha, preciso saber qual a cor que está quando saio daquele texto e vou para outro, por exemplo na cor verde. Pois meu combobox que possui todas as cores, deve ser atualizado quando seleciono um texto de outra cor. Da mesma forma preciso para quando um texto estiver em negrito, trocar o botão de negrito para ficar pressionado. Da mesmo forma que funciona no word.

Sabe como fazer?

abraço

desde já agradeço

Pedro Paulo

Editado por qlale
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
voce sabe usar o RichEdit ou RichText ? é algo muito parecido para o webbrowser

http://scriptbrasil.com.br/forum/index.php...ghlite=richedit

http://scriptbrasil.com.br/forum/index.php...ghlite=richtext

tente ver o que encontra

abraço

Bom dia amigo, o que preciso é pegar as caracteristicas da fonte (se está Negrito, tamanho da fonte...) onde o cursor está no momento, ou do texto selecionado, para poder ajustar o painel.

Por exemplo, estou em um texto que a fonte está com tamanho 12, e no painel tb está 12, dae quando eu vou para outra parte do texto que está 14, quero mudar no painel, para que mostre que estou na fonte 14. Se não não posso saber o tamanho da fonte atual.

Nessa imagem que coloquei no megaupload da pra entender melhor, pois estou selecionando um tempo vermelho, mas o botão la em cima está preto, quero que mude para vermelho.

http://www.megaupload.com/?d=FQILF0B2

Não sei se me fiz entender

obrigado

Editado por qlale
Link para o comentário
Compartilhar em outros sites

  • 0

entendi o que voce quer ... seria algo parecido com o worpad

voce pode olhar esses codigos e aproveitar algumas rotinas

Editor de Textos completo

https://www.scriptbrasil.com.br/download/codigo/5139/

Mini Wordpad

http://www.delphifr.com/telecharger.aspx?ID=37079

ou

http://files.codes-sources.com/fichier_ful...dof&lang=en

program Notepad;

uses 
 Forms, 
 UnitMain in 'UnitMain.pas'{FormMain},
 Unit1 in 'Unit1.pas'{AboutBox}; 

 {$R *.RES} 

 begin 
 Application.Initialize; 
 Application.CreateForm(TFormMain, FormMain);
 Application.CreateForm(TAboutBox, AboutBox); 
 Application.Run; 
 end. 

unit UnitMain; 

interface

uses 
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 Dialogs, Menus, StdCtrls, ComCtrls; 
  
type 
 TFormMain = class(TForm1)
 RichEdit1: TRichEdit; 
 MainMenu1: TMainMenu; 
 MenuFile: TMenuItem; 
 ItemNew: TMenuItem; 
 ItemOpen: TMenuItem; 
 ItemSave: TMenuItem; 
 ItemSaveAs: TMenuItem;

 N2: TMenuItem; 
 ItemPrint: TMenuItem; 
 N4: TMenuItem; 
 ItemClose: TMenuItem; 
 SaveDialog1: TSaveDialog;
 OpenDialog1: TOpenDialog; 
 N1: TMenuItem; 
 ItemFont: TMenuItem; 
 FontDialog1: TFontDialog; 
 PopupMenu1:TPopupMenu; 
 ItemUndo: TMenuItem;
 N3: TMenuItem; 
 ItemRedo: TMenuItem; 
 ItemCut: TMenuItem; 
 ItemCopy: TMenuItem; 
 ItemPaste: TMenuItem; 
 ItemDelete: TMenuItem;
 N5: TMenuItem; 
 ItemSelectAll:TMenuItem; 
 N6: TMenuItem; 
 ItemFindText: TMenuItem; 
 ItemFindAndReplace: TMenuItem; 
 FindDialog1: TFindDialog;
 MenuEdit: TMenuItem; 
 ItemUndo1:TMenuItem; 
 ItemRedo1: TMenuItem; 
 N7: TMenuItem; 
 ItemCut1: TMenuItem; 
 ItemCopy1: TMenuItem;
 ItemPaste1: TMenuItem; 
 ItemDelete1: TMenuItem; 
 N8: TMenuItem; 
 ItemSelectAll1: TMenuItem; 
 N9: TMenuItem; 
 ItemFind1: TMenuItem; 
 ItemFindAndPlace1: TMenuItem;
 N10: TMenuItem; 
 ItemAutoWarp1: TMenuItem; 
 N11: TMenuItem; 
 ItemAutoWarp: TMenuItem; 
 ReplaceDialog1: TReplaceDialog; 
 N12: TMenuItem; 
 N13: TMenuItem;
 N14: TMenuItem; 
 procedure ItemNewClick(Sender: Tobject); 
 procedure ItemOpenClick(Sender: Tobject); 
 procedure ItemSaveClick(Sender: Tobject); 
 procedure ItemPrintClick(Sender: Tobject); 
 procedure ItemCloseClick(Sender: Tobject); 
 procedure ItemFondClick(Sender: Tobject);
 procedure PopupMenu1Popup(Sender: Tobject); 
 procedure ItemUndoClick(Sender: Tobject); 
 procedure ItemRedoClick(Sender: Tobject); 
 procedure ItemCutClick(Sender: Tobject); 
 procedure ItemCopyClick(Sender: Tobject); 
 procedure ItemPasteClick(Sender: Tobject); 
 procedure ItemDelectClick(Sender: Tobject);
 procedure ItemSelectClick(Sender: Tobject); 
 procedure ItemFindTextClick(Sender: Tobject); 
 procedure FindDialog1Find(Sender: Tobject); 
 procedure ItemAutoWarp1Click(Sender: Tobject); 
 procedure ItemFindAndReplaceClick(Sender: Tobject); 
 procedure ReplaceDialog1Replace(Sender: Tobject);
 procedure FormCreat(Sender: Tobject); 
 procedure MenuFileClick(Sender: Tobject); 
 procedure FromCloseQuery(Sender: Tobject; var CanClose: Boolean); 
 procedure N14Click(Sender: Tobject); 
 private 
 sFileName:String;
 Function CheckhasModified:Boolean;
 Function SaveAsFile:Boolean;
 Function SaveFile:Boolean;
 Function MyOpenFile(FileName:String):Boolean;
 { Private declarations } 
 public
 { Public declarations } 
 end; 

var 
 FormMain: TFormMain; 

implementation 

uses RichEdit,Unit1; 

{$R *.dfm} 

function TFormMain.CheckHasModified: Boolean;
begin 
 Result:=not RichEdit1.Modified; 
 if not Result then 
 begin 
 Case Application.MessageBox('??????!??????','??',
 MB_YESNO+mB_ICONQUESTION) OF 
 IDYES:Result:=SaveFile; 
 IDNO:Result:=True; 
 end; 
 end; 
end;

 procedure TFormMain.ItemNewClick(Sender: TObject); 
 begin
 If CheckHasModified Then 
 begin 
 RichEdit1.Lines.Clear;
 RichEdit1.Modified:=False; 
 sFileName:='???'; 
 end; 
end;

function TformMain.SaveAsFile:Boolean;
begin
 Result:=False; 
 if SaveDialog1.Execute then 
 begin 
 RichEdit1.Lines.SaveToFile(SaveDialog1.FileName0; 
 RichEdit1.Modified:=False;
 sFileName:=SaveDialog1.FileName; 
 Result:=True; 
 end; 
end;

procedure TFormMain.ItemOpenClick(Sender: TObject);
begin
 if OpenDialog1.Execute then 
 MyOpenFile(OpenDialog1.FileName); 
end;

Procedure TFormMain.ItemSaveClick(Sender: TObject);
begin
 SaveFile; 
end; 

function TFormMain.SaveFile: Boolean; 
begin
 If sFileName='???' then 
 Result:=SaveAsFile 
 else 
 begin 
 RichEdit1.Lines.SaveToFile(sFileName); 
 RichEdit1.Modified:=False;
 Result:=True; 
 end; 
end;

 procedure TFormMain.ItemSaveAsClick(Sender:TObject); 
 begin
 SaveAsFile;
 end; 

 procedure TFormMain.ItemPrintClick(Sender:TObject); 
 begin
 RichEdit1.Print(sFileName);
 end; 

 procedure TFormMain.ItemCloseClick(Sender: TObject); 
 begin
 Close; 
 end;

 procedure TFormMain.ItemFontClick(Sender: TObject); 
 begin
 FontDialog1.Font.Assign(RichEdit1.Font); 
 if FontDialog1.Execute then 
 RichEdit1.Font.Assign(FontDialog1.Font);
 end; 

 procedure TFormMain.PopupMenu1Popup(Sender: TObject); 
 begin
 ItemUndo.Enabled:=(RichEdit1.Perform(EM_CANUNDO,0,0<>0); 
 ItemRedo.Enabled:=(RichEdit1.Perform(EM_CANREDO,0,0<>0);
 ItemCut.Enabled:=(RichEdit1.Perform(EM_SELECTIONTYPE,0,0)<>0); 
 ItemCopy.Enabled:=ItemCut.Enabled; 
 ItemPaste.Enabled:=(RichEdit1.Perform(EM_CANPASTE,0,0)<>0); 
 ItemAutoWarp.Checked:=RichEdit1.WordWrap; 
 ItemUndo1.Enabled:=(RichEdit1.Perform(EM_CANUNDO,0,0<>0); 
 ItemRedo1.Enabled:=(RichEdit1.Perform(EM_CANREDO,0,0<>0);
 ItemCut1.Enabled:=(RichEdit1.Perform(EM_SELECTIONTYPE,0,0)<>0); 
 ItemCopy1.Enabled:=ItemCut.Enabled; 
 ItemPaste1.Enabled:=(RichEdit1.Perform(EM_CANPASTE,0,0)<>0); 
 ItemAutoWarp1.Checked:=RichEdit1.WordWrap; 
 end; 

 procedure TFormMain.ItemUndoClick(Sender: TObject); 
 begin
 RichEdit1.Perform(EM_UNDO,0,0); 
 end; 

 procedure TFormMain.ItemRedoClick(Sender:TObject);
 begin
 RichEdit1.Perform(EM_REDO,0,0); 
 end; 

 procedure TFormMain.ItemCutClick(Sender: TObject); 
 begin
 RichEdit1.Perform(WM_CUT,0,0); 
 end; 

 procedure TFormMain.ItemCopyClick(Sender:TObject); 
 begin
 RichEdit1.Perform(WM_COPY,0,0);
 end; 

 procedure TFormMain.ItemPasteClick(Sender:TObject); 
 begin
 RichEdit1.Perform(WM_Paste,0,0); 
 end;

 procedure TFormMain.ItemDeleteClick(Sender: TObject);
 begin
 RichEdit1.Perform(WM_CLEAR,0,0); 
 end; 

 procedure TFormMain.ItemSelectAllClick(Sender: TObject); 
 Var P:TPoint;
 begin 
 P:=Point(0,0); 
 P:=RichEdit1.ClientToScreen(P); 
 FindDialog1.Position := P;
 FindDialog1.Execute; 
 end; 

 procedure TFormMain.FindDialog1Find(Sender: TObject); 
 var
 FoundAt: LongInt;
 StartPos, ToEnd: Integer; 
 st:TSearchTypes; 
 begin 
 with RichEdit1 do 
 begin 
 StartPos :=SelStart + SelLength;
 ToEnd := Length(Richedit1.Text) - StartPos; 
 st:=[]; 
 if frMatchCase in FindDialog1.Options then 
 st:=st+[stMatchCase]; 
 if frWholeWord in FindDialog1.Options then 
 st:=st+[stWholeWord];
 FoundAt := FindText(FindDialog1.FindText,StartPos,Toend,st); 
 if FoundAt <> -1 then 
 begin 
 SelStart := FoundAt; 
 SelLength := Length(FindDialog1.FindText); 
 end else
 ShowMessage('????!') 
 end; 
 end; 

 procedure TFormMain.ItemAutoWarp1Click(Sender: TObject);
 begin
 RichEdit1.WordWrap:=not RichEdit1.WordWrap; 
 ItemAutoWarp1.Checked:=RichEdit1.WordWrap; 
 ItemAutoWarp.Checked:=RichEdit1.WordWrap; 
 end;

 Function TFormMain.MyOpenFile(FileName:String):Boolean; 
 begin
 Result:=False; 
 if CheckHasModified then
 begin 
 try 
 RichEdit1.Lines.LoadFromFile(FileName); 
 RichEdit1.Modified:=False 
 sFileName:=FileName;
 Result:=True; 
 except 
 on E:Exception do 
 ShowMessage(E.Message); 
 end;
 end; 
 end; 

 procedure TFormMain.ItemFindAndREplaceClick(Sender:TObject); 
 Var P:TPoint;
 begin 
 P:=Point(0,0); 
 P:=RichEdit1.ClientToScreen(P); 
 ReplaceDialog1.Position := P; 
 ReplaceDialog1.Execute;
 end; 

 procedure TFormMain.ReplaceDialog1Replace(Sender: TObject); 
 Var P:TPoint;
 begin
 P:=Point(0,0); 
 P:=RichEdit1.ClientToScreen(P); 
 ReplaceDialog1.Position := P; 
 ReplaceDialog1.Execute; 
 end;

 procedure TFormMain.ReplaceDialog1Replace(Sender: TObject): 
 var
 FoundAt: LongInt; 
 StartPos, ToEnd: Integer;
 st:TSearchTypes; 
 begin 
 with RichEdit1 do 
 begin 
 StartPos := SelStart + SelLength;
 ToEnd := Length(RichEdit1.Text) - StartPos; 
 st:=[]; 
 if frMatchCase in ReplaceDialog1.Options then 
 st:=st+[stMatchCase]; 
 if frWholeWord in ReplaceDialog1.Options.then
 st:=st+[stWholeWord]; 
 FoundAt := FindText(Replacedialog1.FindText, StartPos, ToEnd, st); 
 While FoundAt <> -1 do 
 begin 
 SelStart := FoundAt;
 SelLength := Length(ReplaceDialog1.FindText); 
 Perform(EM_REPLACESEL,1,Interger(PChar(Replacedialog1.ReplaceText))); 
 SelStart := FoundAt; 
 SelLength := Length(ReplaceDialog1.ReplaceText); 
 if not (frReplaceAll in ReplaceDialog1.Options) then
 Break; 
 StartPos:=SelStart; 
 ToEnd := Length(RichEdit1..Text) - StartPos; 
 FoundAt := FindText(ReplaceDialog1.FindText, StartPos,ToEnd,st); 
 end;
 FoundAt:= FindText(ReplaceDialog1.FindText,StartPos,ToEnd,st); 

 if FoundAt=-1 then
 ShowMessage('????!'); 
 end;
end;

 procedure TFormMain.FormCreate(Sender: TObject); 
 Var s1FileName,TemStr,ParamString:String;
 i,FromIndex,ToIndex,iPox:Integer;
 Reg:TRegistry; 
 begin 
 try 
 Reg:=TRegistry.Create;
 try 
 Reg.RootKey:=HKEY_CLASSES_ROOT; 
 Reg.OpenKey('*\shell\MyNotePad',True); 
 Reg.WriteString('','????????');
 Reg.CloseKey; 
 Reg.OpenKey('*\Shell\MyNotePad\Command',True); 
 Reg.WriteString('','"'+ParamStr(0)+'" "%1"'); 
 Reg.CloseKey;
 finally 
 Reg.Free; 
 end; 
 except
 end;
 if ParamCount>=1 then 
 begin 
 i:=1;
 ParamString:=ParamStr(i); 
 While (ParamString[1]='/') and(i<=ParamCount) do 
 begin 
 Inc(i);
 ParamString:=ParamStr(i); 
 end; 
 FromIndex:=i; 
 ParamString:=ParamStr(i);
 if ParamString[1]='/' then 
 Exit; 
 While i<=ParamCount do 
 begin
 if ParamString[1]='/' then 
 Break; 
 Inc(i); 
 ParamString:=ParamStr(i);
 end; 
 ToIndex:=i; 
 s1FileName:=GetCommandLine; 
 ParamString:=ParamStr(FromIndex);
 iPos:=Pos(ParamString,s1Filename); 
 TemStr:=ParamString; 
 Delete(s1Filename,1,iPos-1+length(TemStr));
 For i:=FromIndex+1 to ToIndex do 
 begin 
 ParamString:=ParamStr(i);
 iPos:=pos(ParamString,s1FileName); 
 TemStr:=TemStr+copy(s1FileName,1,iPos+length(ParamString)); 
 end;
 s1FileName:=TemStr; 
 MyOpenFile(s1FileName); 
 For i:=1 to ParamCount do
 begin 
 if (ParamStr(i)='/p') or(ParamStr(i)='/p' then 
 begin
 if Application.MessageBox('????','??',MB_YESNO+MB_ICONQUESTION) 
 =IDYes then 
 RichEdit1.Print(sFileName);
 Break; 
 end; 
 end
 end; 

end;

 procedure TFormMain.MenuFileClick(Sender: Tobject); 
 begin
 ItemSave.Enabled:=RichEdit1.Modified; 
 end;

 procedure TFormMain.FormCloseQuery(Sender: TObject; VAr CanClose:Boolean);
 begin
 CanClose:=not RichEdit1.Modified;
 if not CanClose then
 begin
 Case Application.MessageBox('??????!??????','??',
 MB_YESNOCANCEL+MB_ICONQUESTION) of
 IDYES:CanClose:=SaveFile;
 IDNo:CanClose:=True;
 end;
 end;
 end;

 procedure TFormMain.N14Click(Sender:TObject);
 begin
 AboutBox.showmodal;
 end;
end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade o que preciso, é fazer um programa que sirva como ajuda para o usuário final do sistema. Tipo o WinCHM, porém os dados devem ser armazenados em um banco de dados. Estou encontrando muita dificuldade. Pois na minha aplicação eu escolho a tela para visualizar em uma pagina HTML a explicação, porém posso alterar os dados da explicação.

Penso que o melhor caminha para edição é utilizar o OleContainer. Porém ele faz quase tudo certo. Ele abre meu HTML e deixa eu editar. Mas quando vou salvar, o browser abre o HTML todo deformado. Ou seja, quando o OreContainer do Word salva, ele sava com problema.

Acho que minha solução é Transformar .Doc para .HTML.

você tem alguma ideia de como fazer isso em delphi?

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...