-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
Esse chiadinho nada mais é do que vazamento de alta tensão ( muitas vezes provocado por excesso de poeira dentro do monitor ) Retire a tampa traseira do monitor ( com ele desligado da tomada ) se não puder usar um compressor de ar , use um aspirador ) limpe toda poeira dentro do gabinete do monitor. retire a chupeta ( parece uma ventosa ) que é ligada ao tubo de imagem. passe vaselina nas bordas da chupeta recoloque a chupeta no lugar e certifique que está bem presa. OBS: o vazamento de alta tensão poderá estar em outro local, que somente poderá ser visto com o gabinete aberto e em funcionamento, portanto tenha muito cuidado. ( não coloque nenhuma ferramenta dentro do monitor com ele em funcionamento e esteja usando um calçado de sola de borracha ) Se não tiver experiência neste tipo de manutenção, procure assitência técnica. abraço
-
Erro em alteração de registro buscado
pergunta respondeu ao Gabriel Cabral de Jhonas em Delphi, Kylix
Colega ... o seu código está muito estranho veja : voce faz a busca por esta query with dm.QueryBuscaPro do aqui voce já esta informando outra query QueryBuscaForn a propriedade Read-only do dataset da query já está false ... mas em qual ? QueryBuscaPro ? ou QueryBuscaForn ? abraço -
Veja nestes endereços: http://superdownloads.uol.com.br/download/44/helpscribble/ http://www.delphi.eti.br/downloads.php?id=4672 http://3d2f.com/tags/forehelp/ http://www.filetransit.com/files.php?name=Forehelp http://www.filesland.com/companies/JGsoft-...e/products.html http://www.download32.com/forehelp-software.html http://www.sinterphase.com/fhintro.htm abraço
-
Encontrar dados em arquivo .txt
pergunta respondeu ao João Paulo Taraciuk de Jhonas em Delphi, Kylix
seria algo como isto procedure TForm1.Button1Click(Sender: TObject); var Arquivo: TextFile; Texto, line : string; begin Memo1.Clear; AssignFile(Arquivo, 'C:\Sintegra.Txt'); Reset(Arquivo); while not EOF(Arquivo) do begin ReadLn(Arquivo, Line); Texto := Line; if pos('75',texto) > 0 then Memo1.Lines.Append(line); end; CloseFile(Arquivo); end; abraço -
Erro em alteração de registro buscado
pergunta respondeu ao Gabriel Cabral de Jhonas em Delphi, Kylix
Estava observando o seu código, voce faz pesquisa usando dm.QueryBuscaPro e pegava os dados de dm.tblCadPro por isso é que não funciona como voce quer Faça a pesquisa usando o dm.QueryBuscaPro e jogue os dados desta query nos seus campos exemplo: procedure TfrmCadPro.btnAlterarClick(Sender: TObject); var i: integer; begin with dm.QueryBuscaPro do begin Close; SQL.Clear; SQL.Add('SELECT * FROM ESTAPRO.dbf'); SQL.Add('WHERE PROCOD = :pCOD'); showmessage(txtAuxCod.Text); // aqui vai aparecer o valor desta variavel ParambyName('pCOD').AsString := txtAuxCod.Text; Open; end; if not (txtAuxCod.Text = '') then begin if dm.QueryBuscaPro.FieldByName('PROCOD').IsNull = False then begin txtCadPro_CodPro.Text := dm.QueryBuscaPro.FieldByName('PROCOD').Value; end; if dm.QueryBuscaPro.FieldByName('PROTIP').IsNull = False then begin cboCadPro_Secao.Text := dm.QueryBuscaPro.FieldByName('PROTIP').Value; end; // CONTINUAÇÃO DOS CÓDIGOS if dm.QueryBuscaPro.FieldByName('PROQTS').IsNull = False then begin txtCadPro_QtdeSai.Text := dm.QueryBuscaPro.FieldByName('PROQTS').Value; end; // parte do codigo retirado temporariamente txtCadPro_AuxCodPro.Text := txtCadPro_CodPro.Text; dm.QueryBuscaPro.Edit; end; Mas sinceramente eu não faria um código como este... veja como funciona a opção Form Wizard do DataBase ( Menu do delphi ) abraço -
ADOX_TLB.dcu ZAbstractRODataset.dcu procure por estas dcus em seu micro e copie-as para a pasta LIB do delphi abraço
-
Relatório QuickReport filtrado por ordem de data.
pergunta respondeu ao Rajare de Jhonas em Delphi, Kylix
Que tipo de programador voce quer ser ... sem leitura e pesquisa é que voce não consegue nada A sua select é que deve ordenar os registros exemplo Selec * from Aniversariantes order by DataAniv Selec * from Aniversariantes order by Nome Uma vez os registros selecionados é só coloca-los em um quickreport Como usar um quicreport ?? Faça uma pesquisa no forum ... rs http://scriptbrasil.com.br/forum/index.php...te=quick+report abraço -
O que voce mostrou na figura parece ser os QRLabels que voce colocou na banda de detalhe ( Detail ) e a repetição pode ser pelo fato da sql ter encontrado 4 registros .... e se não estão aparecendo pode ser porque voce não fez o link da tabela com o componente QRDBText OBS: Os QRLabels devem ficar de fora da banda de Detail Se estiver com dúvidas, faça uma pesquisa no forum http://scriptbrasil.com.br/forum/index.php...\%2Breport abraço
-
Erro em alteração de registro buscado
pergunta respondeu ao Gabriel Cabral de Jhonas em Delphi, Kylix
Em certas situações eu até uso sem problemas quando o locate deve ser feito em poucos registros, mas se forem muitos é desconselhável, é preferível usar uma sql with dm.QueryBuscaPro do begin Close; SQL.Clear; SQL.Add('SELECT * FROM ESTAPRO.dbf'); SQL.Add('WHERE PRODES = :pDESC'); ParambyName('pDESC').AsString := GridLocalPro.SelectedField.AsString; Open; showmessage(inttostr(QueryBuscaPro.RecordCount)); // veja quantos registros a sql tá trazendo supondo que no seu arquivo não possua códigos repetidos, deveria trazer apenas um registro ... aquele que foi escolhido abraço -
de cara voce percebe que pode ser bug de versão ... tente usar a versão anterior novamente abraço
-
Erro em alteração de registro buscado
pergunta respondeu ao Gabriel Cabral de Jhonas em Delphi, Kylix
Primeiro ... voce deveria usar o debug do delphi para saber qual é o valor da variavel txtAuxCod.Text que esta sendo passada para a sql, pode não ser o valor que voce está achando que é faça um teste desta maneira procedure TfrmCadPro.btnAlterarClick(Sender: TObject); var i: integer; begin with dm.QueryBuscaPro do begin Close; SQL.Clear; SQL.Add('SELECT * FROM ESTAPRO.dbf'); SQL.Add('WHERE PROCOD = :pCOD'); showmessage(txtAuxCod.Text); // aqui vai aparecer o valor desta variavel ParambyName('pCOD').AsString := txtAuxCod.Text; Open; if not(IsEmpty) then begin frmCadPro.txtCadPro_CodPro .Text := dm.QueryBuscaPro.FieldByName('PROCOD').AsString; frmCadPro.cboCadPro_Secao .Text := dm.QueryBuscaPro.FieldByName('PROTIP').AsString; frmCadPro.txtCadPro_DataCad .Text := dm.QueryBuscaPro.FieldByName('PROCAD').AsString; frmCadPro.txtCadPro_Desc .Text := dm.QueryBuscaPro.FieldByName('PRODES').AsString; frmCadPro.txtCadPro_Estoque .Text := dm.QueryBuscaPro.FieldByName('PROQTD').AsString; frmCadPro.txtCadPro_UndVen .Text := dm.QueryBuscaPro.FieldByName('PROUND').AsString; frmCadPro.cboCadPro_Icms .Text := dm.QueryBuscaPro.FieldByName('PROICM').AsString; frmCadPro.txtCadPro_EstMin .Text := dm.QueryBuscaPro.FieldByName('PROMIN').AsString; frmCadPro.txtCadPro_EstMax .Text := dm.QueryBuscaPro.FieldByName('PROMAX').AsString; frmCadPro.txtCadPro_PreCus .Text := dm.QueryBuscaPro.FieldByName('PROCUS').AsString; frmCadPro.txtCadPro_Vml .Text := dm.QueryBuscaPro.FieldByName('PROLUC').AsString; frmCadPro.txtCadPro_PreVen .Text := dm.QueryBuscaPro.FieldByName('PROPRE').AsString; frmCadPro.cboCadPro_CodForn1 .Text := dm.QueryBuscaPro.FieldByName('PROFOR').AsString; frmCadPro.cboCadPro_CodForn2 .Text := dm.QueryBuscaPro.FieldByName('PROFO2').AsString; frmCadPro.cboCadPro_CodForn3 .Text := dm.QueryBuscaPro.FieldByName('PROFO3').AsString; frmCadPro.cboCadPro_CodForn4 .Text := dm.QueryBuscaPro.FieldByName('PROFO4').AsString; frmCadPro.txtCadPro_Fracao .Text := dm.QueryBuscaPro.FieldByName('PROFRA').AsString; frmCadPro.txtCadPro_UndCompra .Text := dm.QueryBuscaPro.FieldByName('PROUNC').AsString; frmCadPro.txtCadPro_Local .Text := dm.QueryBuscaPro.FieldByName('PROLOC').AsString; frmCadPro.txtCadPro_Cotacao .Text := dm.QueryBuscaPro.FieldByName('PROCOT').AsString; frmCadPro.txtCadPro_CodOrigem .Text := dm.QueryBuscaPro.FieldByName('PROORI').AsString; frmCadPro.txtCadPro_ArqBal .Text := dm.QueryBuscaPro.FieldByName('PROPES').AsString; frmCadPro.txtCadPro_PesUnd .Text := dm.QueryBuscaPro.FieldByName('PROUNP').AsString; frmCadPro.txtCadPro_DiasVal .Text := dm.QueryBuscaPro.FieldByName('PRODVL').AsString; frmCadPro.txtCadPro_BalCaixa .Text := dm.QueryBuscaPro.FieldByName('PROBAL').AsString; frmCadPro.txtCadPro_PreOfe .Text := dm.QueryBuscaPro.FieldByName('PROPOF').AsString; frmCadPro.txtCadPro_DataIniOfe .Text := dm.QueryBuscaPro.FieldByName('PROIOF').AsString; frmCadPro.txtCadPro_DataFinOfe .Text := dm.QueryBuscaPro.FieldByName('PRODOF').AsString; frmCadPro.txtCadPro_EstoqPrat .Text := dm.QueryBuscaPro.FieldByName('PROEPR').AsString; frmCadPro.txtCadPro_QtdeMinPrat .Text := dm.QueryBuscaPro.FieldByName('PROPRT').AsString; frmCadPro.txtCadPro_TotalComp .Text := dm.QueryBuscaPro.FieldByName('PROCOM').AsString; frmCadPro.txtCadPro_TotalVend .Text := dm.QueryBuscaPro.FieldByName('PROVEN').AsString; frmCadPro.txtCadPro_DataUlt .Text := dm.QueryBuscaPro.FieldByName('PRODTC').AsString; frmCadPro.txtCadPro_FornUlt .Text := dm.QueryBuscaPro.FieldByName('PROFOC').AsString; frmCadPro.txtCadPro_QtdeUlt .Text := dm.QueryBuscaPro.FieldByName('PROQDC').AsString; frmCadPro.txtCadPro_PreUlt .Text := dm.QueryBuscaPro.FieldByName('PROPRC').AsString; frmCadPro.txtCadPro_DataEnt .Text := dm.QueryBuscaPro.FieldByName('PROENT').AsString; frmCadPro.txtCadPro_QtdeEnt .Text := dm.QueryBuscaPro.FieldByName('PROQTE').AsString; frmCadPro.txtCadPro_DataSai .Text := dm.QueryBuscaPro.FieldByName('PROSAI').AsString; frmCadPro.txtCadPro_QtdeSai .Text := dm.QueryBuscaPro.FieldByName('PROQTS').AsString; end; end; // retirado o código temporariamente para o teste dm.tblCadPro.Edit; end; Faça assim e veja se dá certo... caso afirmativo coloque o restante do codigo e teste novamente abraço -
(Resolvido) envio de email no outlook2000
pergunta respondeu ao danielrgoes de Jhonas em Delphi, Kylix
Veja nestes endereços: http://www.ramosdainformatica.com.br/art_r...es01.php?CDA=22 http://www.forumweb.com.br/foruns/lofivers...php/t23551.html http://www.techtips.com.br/programacao/out...aves_do_delphi/ abraço -
Vamos utilizar algo mais concreto para voce poder aprender siga os passos que esta neste site ( leia tudo antes de por em prática ) http://www.geocities.com/WallStreet/Exchan...hi/delphi_6.htm abraço
-
Sempre faça uma pesquisa no forum para ver se acha alguma coisa a respeito http://scriptbrasil.com.br/forum/index.php...te=criptografia abraço
-
fiz uma aplicaçãozinha de teste e quando rodo por fora do delphi não dá o erro. mas a minha aplicação continua com esse erro Se na nova aplicação não dá erro, por dedução, a sua aplicação antiga contém as units da versão anterior do zeos que devem ser removidas. abraço
-
voce pode fazer um processo automatizado, ou seja, basta ter uma lista de strings que serão lidas dentro de um comando FOR usando o OnReplace. Se voce pensar um pouquinho, bastará mudar alguma coisa no seu código para conseguir isto abraço
-
Olha o que voce postou: Undeclared indetifies: "Value" " Undeclared indentifier: 'tblFuncionarioTIPO" o mesmo problema que te disse antes, lembra? O erro é : identificador não declarado significa que DM.tblFuncionarioTIPO.Value não esta declarado no seu programa, ou seja, está faltando voce adicioná-lo ao componente ADOTable ( já te expliquei no post acima como fazer isso ). Voce precisa ler mais sobre o delphi ... procure apostilas e tutorias abraço
-
A sintaxe do comando está correta .... pode estar faltando o uses DB abraço
-
Veja a lista de anti-vírus neste endereço http://pt.malavida.com/go/descarregar-antivirus abraço
-
Tudo o que voce precisa está nos posts acima estude com calma os códigos que voce consegue implementar o que está querendo abraço
-
o código funciona, voce é que não esta sabendo como usar voce não acha que o componente WebBrowser tem que mostrar uma página qualquer da internet para quando voce clicar no botão ele recortar uma parte dessa imagem e salvar ? isso em programação não funciona... leia e leia muito sobre o delphi abraço
-
esta correto ... voce pode ter esquecido de adiconar os campos ao componente ADOtable de clique duplo sobre o componente ADOtable e com o botão direito do mouse clique na janelinha fields editor clique em Add all fields todos os campos da tabela irão aparecer dentro do fields editor ... o erro deve sumir abraço
-
componente para conexao mysql/delphi2007
pergunta respondeu ao aalessandre de Jhonas em Delphi, Kylix
Colega ... voce fez o que foi sugerido a voce ? desisntalar tudo, limpar os registros do windows e instalar novamente ? abraço -
Mais uma dica pra voce unit Search; interface uses WinProcs, SysUtils, StdCtrls, Dialogs; const WordDelimiters: set of Char = [#0..#255] - ['a'..'z','A'..'Z','1'..'9','0']; function SearchMemo(Memo: TCustomEdit; const SearchString: String;Options: TFindOptions): Boolean; function SearchBuf(Buf: PChar; BufLen: Integer;SelStart, SelLength: Integer; SearchString: String;Options: TFindOptions): PChar; implementation function SearchMemo(Memo: TCustomEdit;const SearchString: String; Options: TFindOptions): Boolean; var Buffer, P: PChar; Size: Word; begin Result := False; if (Length(SearchString) = 0) then Exit; Size := Memo.GetTextLen; if (Size = 0) then Exit; Buffer := StrAlloc(Size + 1); try Memo.GetTextBuf(Buffer, Size + 1); P := SearchBuf(Buffer, Size, Memo.SelStart,Memo.SelLength,SearchString, Options); if P <> nil then begin Memo.SelStart := P - Buffer; Memo.SelLength := Length(SearchString); Result := True; end; finally StrDispose(Buffer); end; end; function SearchBuf(Buf: PChar; BufLen: Integer;SelStart, SelLength: Integer; SearchString: String;Options: TFindOptions): PChar; var SearchCount, I: Integer; C: Char; Direction: Shortint; CharMap: array [Char] of Char; function FindNextWordStart(var BufPtr: PChar): Boolean; begin { (True XOR N) is equivalent to (not N) } // Result := False; { (False XOR N) is equivalent to (N) } { When Direction is forward (1), skip nondelimiters, then skip delimiters. } { When Direction is backward (-1), skip delims, then skip non delims } while (SearchCount > 0) and ((Direction = 1) xor (BufPtr^ in WordDelimiters)) do begin Inc(BufPtr, Direction); Dec(SearchCount); end; while (SearchCount > 0) and ((Direction = -1) xor (BufPtr^ in WordDelimiters)) do begin Inc(BufPtr, Direction); Dec(SearchCount); end; Result := SearchCount > 0; if Direction = -1 then begin { back up one char, to leave ptr on first nondelim } Dec(BufPtr, Direction); Inc(SearchCount); end; end; begin Result := nil; if BufLen <= 0 then Exit; if frDown in Options then begin Direction := 1; Inc(SelStart, SelLength); { start search past end of selection } SearchCount := BufLen - SelStart - Length(SearchString); if SearchCount < 0 then Exit; if Longint(SelStart) + SearchCount > BufLen then Exit; end else begin Direction := -1; Dec(SelStart, Length(SearchString)); SearchCount := SelStart; end; if (SelStart < 0) or (SelStart > BufLen) then Exit; Result := @Buf[SelStart]; { Using a Char map array is faster than calling AnsiUpper on every character } for C := Low(CharMap) to High(CharMap) do CharMap[C] := C; if not (frMatchCase in Options) then begin AnsiUpperBuff(PChar(@CharMap), sizeof(CharMap)); AnsiUpperBuff(@SearchString[1],Length(SearchString)); end; while SearchCount > 0 do begin if frWholeWord in Options then if not FindNextWordStart(Result) then Break; I := 0; while (CharMap[Result[I]] = SearchString[I+1]) do begin Inc(I); if I >= Length(SearchString) then begin if (not (frWholeWord in Options)) or (SearchCount = 0) or (Result[I] in WordDelimiters) then Exit; Break; end; end; Inc(Result, Direction); Dec(SearchCount); end; Result := nil; end; end. Veja se consegue implementar o que falta ao seu programa abraço Vou te passar um programa completo ( NOTEPAD EM DELPHI ) 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. Neste voce vai encontrar as funções que esta procurando abraço
-
O que voce está querendo é converter imagem bmp em texto. Neste endereço voce vai encontrar o que é necessário, mas é pago http://www.freedownloadscenter.com/Best/ocr-delphi-bmp.html abraço