-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
para keybd_event ( 13, 0, 0, 0 ); voce deve usar keybd_event ( VK_RETURN, 0, 0, 0 ); veja um exemplo: var Form1: TForm1; cont : integer = 0; implementation {$R *.DFM} procedure TForm1.Timer1Timer(Sender: TObject); begin keybd_event ( VK_RETURN, 0, 0, 0 ); cont := cont + 1; end; procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := true; edit1.SetFocus; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 then Edit1.Text := 'Nº de vezes da tecla enter ' + inttostr(cont); end; Observe que o evento deve ocorrer em cima de um determinado componente do form .... neste exemplo o pressionamento da tecla enter ocorre no evento OnKeyPress do componente Edit1 e consequentemente o foco devera estar sobre ele para que funcione. abraço
-
inherited significa Herdar... o inherited faz referencia aos codigos dos componentes herdados. Use Inherited derivar uma nova classe de um item selecionado no Repositório de Objetos e acrescentar a nova classe ao seu projeto. O opção Inherited cria uma ligação com o item ancestor no repositório. Quando você recompilar seu projeto, é refletida qualquer mudança que foi feita ao item no Repositório de Objeto em sua classe derivada. Estas mudanças se aplicam ( além de qualquer mudança ou adições que você faz ) ao item em seu projeto. As mudanças feitas na sua classe derivada não afeta o item compartilhado no Repositório de Objeto. abraço
-
unit DBEdit1; interface uses SysUtils, Classes, Controls, StdCtrls, Mask, DBCtrls, Graphics, Dialogs; type TdsDBEdit = class(TDBEdit) private { Private declarations } fAtivaFoco: Boolean; fCorFocado: TColor; fCorNaoFocado: TColor; fFontFocado: TFont; fFontNaoFocado: TFont; procedure setFocoEnter(Sender: TObject); procedure setFontFocado(Valor: TFont); procedure setFocoExit(var Message: TCMExit); message CM_EXIT; protected { Protected declarations } public { Public declarations } constructor create(AOwner: tcomponent); override; destructor destroy; override; published { Published declarations } property dsAtivaFoco: Boolean read fAtivaFoco write fAtivaFoco default True; property dsCorFocado: TColor read fCorFocado write fCorFocado; property dsFontFocado: TFont read fFontFocado write setFontFocado; end; procedure Register; implementation constructor TdsDBEdit.Create(AOwner : TComponent); begin inherited Create(AOwner); fAtivaFoco:= True; fCorFocado:= $00FF8080; fCorNaoFocado:= Self.Color; fFontFocado:= TFont.Create; fFontFocado.Assign(Font); fFontNaoFocado:= TFont.Create; fFontNaoFocado.Assign(Font); //eventos... OnEnter:= setFocoEnter; end; destructor TdsDBEdit.Destroy; begin fFontFocado.Free; fFontNaoFocado.Free; inherited destroy; end; procedure TdsDBEdit.setFocoEnter(Sender: TObject); begin if fAtivaFoco = true then begin fCorNaoFocado:= Color; Color:= fCorFocado; fFontNaoFocado.Assign(Font); Font.Assign(fFontFocado); end; end; procedure TdsDBEdit.setFocoExit(var Message: TCMExit); begin Color:= fCorNaoFocado; Font.Assign(fFontNaoFocado); if Assigned(OnExit) then OnExit(Self); end; procedure TdsDBEdit.setFontFocado(Valor: TFont); begin fFontFocado.Assign(Valor); end; procedure Register; begin RegisterComponents('Daniel', [TdsDBEdit]); end; end. Veja que a unica diferença para o seu código esta no nome da Unit .. mas aqui esta funcionando certinho abraço
-
(Resolvido)Inserção de um texto de arquivo .doc no BD SQL Server
pergunta respondeu ao Victor_DF de Jhonas em Delphi, Kylix
Voce está dando o comando para Salvar ??? poste o seu código que fica mais facil te ajudar abraço -
SrMaster ... perguntei qual era o seu nivel de conhecimento na linguagem ( já vi, não entendi nada, e na source não tem passa música sózinho.) , porque adicionando apenas 5 linhas de código ao código que te passei ( link abaixo ) irá funcionar da maneira como está querendo... ou seja tocar uma música finalizar e começar outra da lista automaticamente. http://rs218.rapidshare.com/files/97775364/Vers_o_1.0.1.zip abraço
-
O seu código está funcionando perfeitamente sem problemas .... desistale o seu componente e instale-o novamente recompilando novamente o código abraço
-
Mover barra de rolagem de varios grids simultaneamente
pergunta respondeu ao etspaz de Jhonas em Delphi, Kylix
Voce ganha tempo e não aprende o porque as coisas: Alguns eventos não são vinculados tão claramente a ocorrências externas. Por exemplo, uma barra de rolagem tem um evento OnChange, que é disparado por diversos tipos de ocorrências incluindo pressionamento de teclas, cliques de mouse e mudanças em outros controles. Ao definir seus eventos, voce precisa certificar-se de que todas as ocorrências chamam os eventos apropriados. Então creio que voce já percebeu que não existe um evento aparente de manipulação da barra de rolagem, então voce terá que criar esse evento para ser usado no dbgrid. Caso não saiba como criar um evento novo para um componente ( no caso o dbgrid ) então voce terá que apelar para uma gambiarra que tambem funciona var Form1: TForm1; posicao : integer = 0; implementation {$R *.DFM} procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); begin posicao := ScrollPos; if ScrollBar1.Position < posicao then begin SendMessage(DBgrid1.Handle, WM_VSCROLL, SB_LINEDOWN, 0); SendMessage(DBgrid2.Handle, WM_VSCROLL, SB_LINEDOWN, 0); end else begin SendMessage(DBgrid1.Handle, WM_VSCROLL, SB_LINEUP, 0); SendMessage(DBgrid2.Handle, WM_VSCROLL, SB_LINEUP, 0); end; end; Veja se consegue entender o que fiz neste exemplo abraço -
realmente voce está errando ... poste o código para vermos onde o erro está abraço
-
(Resolvido) Linha selecionada num dbgrid
pergunta respondeu ao Alessandra (Jundiai) de Jhonas em Delphi, Kylix
Neste exemplo quando voce clica em uma linha de uma coluna, ele testa para saber se é a coluna escolhida procedure TFMovCaixa.DBGrid1CellClick(Column: TColumn); begin if DBGrid1.SelectedField.FieldName='TIPO' then begin .... comandos end; if DBGrid1.SelectedField.FieldName='CALC' then begin .... comandos end; end; É fácil saber a coluna que você está no DBGrid. Para isso vamos usar a propriedade SelectedIndex que retorna o número da coluna. Veja um exemplo: procedure Tform1.DBGrid1ColEnter(Sender:TObject); begin Edit1.Text := IntToStr(DBGrid1.SelectedIndex); end; Meu programa precisa processar algo quando o usuário clicar no DBGrid em um determinado form. O problema é que o DBGrid não possui o evento OnClick. É possível adicionar este evento no DBGrid? Solução: É possível sim. Afinal é muito simples. Siga os passos abaixo para resolver seu problema: - Monte seu form normalmente, colocando o DBGrid e demais componentes; - Vá na seção "private" da unit e declare a procedure abaixo: private procedure DBGridClick(Sender: TObject); - Logo após a palavra "implementation", escreva a procedure: implementation {$R *.DFM} procedure TForm1.DBGridClick(Sender: TObject); begin ShowMessage('Clicou no DBGrid.'); end; - Coloque as instruções abaixo no evento OnCreate do Form: procedure TForm1.FormCreate(Sender: TObject); begin DBGrid1.ControlStyle := DBGrid1.ControlStyle + [csClickEvents]; TForm(DBGrid1).OnClick := DBGridClick; end; - E pronto. Execute e teste. Observações O segredo principal desta dica está OnCreate do Form. A primeira instrução ativa o evento OnClick. A segunda instrução acessa o manipulador do evento OnClick. Para isto precisamos tratar o DBGrid como se fosse Form, pois o evento OnClick está declarado como protegido (protected) na classe TDBGrid. abraço -
Exemplo //Inserindo zeros no inicio de um inteiro //Ex: Se o inteiro for 1 fica 0001. Se for 100, fica 0100. var s: string; begin FmtStr(s, '%.4d', [StrToInt(edit1.text)]); edit1.text := s; end; abraço
-
(Resolvido)Inserção de um texto de arquivo .doc no BD SQL Server
pergunta respondeu ao Victor_DF de Jhonas em Delphi, Kylix
Voce está querendo jogar o conteudo do banco em um documento word ? se for isso, pesquise no forum pela palavra word, find e replace abraço -
Mover barra de rolagem de varios grids simultaneamente
pergunta respondeu ao etspaz de Jhonas em Delphi, Kylix
Quando voce rolar uma barra as outras acompanharão { Página para cima } SendMessage(DBgrid1.Handle, WM_VSCROLL, SB_PAGEUP, 0); SendMessage(DBgrid2.Handle, WM_VSCROLL, SB_PAGEUP, 0); SendMessage(DBgrid3.Handle, WM_VSCROLL, SB_PAGEUP, 0); { Página para baixo } SendMessage(DBgrid1.Handle, WM_VSCROLL, SB_PAGEDOWN, 0); SendMessage(DBgrid2.Handle, WM_VSCROLL, SB_PAGEDOWN, 0); SendMessage(DBgrid2.Handle, WM_VSCROLL, SB_PAGEDOWN, 0); { Linha para baixo } SendMessage(DBgrid1.Handle, WM_VSCROLL, SB_LINEDOWN, 0); SendMessage(DBgrid2.Handle, WM_VSCROLL, SB_LINEDOWN, 0); SendMessage(DBgrid3.Handle, WM_VSCROLL, SB_LINEDOWN, 0); { Linha para cima } SendMessage(DBgrid1.Handle, WM_VSCROLL, SB_LINEUP, 0); SendMessage(DBgrid2.Handle, WM_VSCROLL, SB_LINEUP, 0); SendMessage(DBgrid3.Handle, WM_VSCROLL, SB_LINEUP, 0); abraço -
Veja se econtra alguma coisa no forum http://scriptbrasil.com.br/forum/index.php...ighlite=dbchart abraço
-
Voce já olhou no exemplo do proprio delphi ? C:\Arquivos de programas\Borland\Delphi5\Demos\Teechart abraço
-
Faça uma pesquisa no forum http://scriptbrasil.com.br/forum/index.php...te=quick+report abraço
-
(Resolvido) Mostrar Mesagem de alerta no JvDesktopAlert
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
Voce deve criar o componente dinamicamente exemplo: JvDesktopAlert := TJvDesktopAlert.Create(nil); with JvDesktopAlert do begin ... end; e depois deve destruí-lo JvDesktopAlert .Free; JvDesktopAlert := nil; Veja este outro exemplo: http://www.activedelphi.com.br/forum/viewt...fb264fa3e2019b6 abraço -
Conhecendo a lógica do TEF e NF-e http://www.forumweb.com.br/foruns/index.ph...namento-do-tef/ abraço
-
(Resolvido) Não alterar a cor da linha do DBgrid selecionada
pergunta respondeu ao William - TI de Jhonas em Delphi, Kylix
Willian - TI faça dessa maneira: procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin if gdSelected in State then begin With (Sender as TDbGrid).Canvas do begin dbgrid1.Canvas.Font.Style := Canvas.Font.Style +[fsBold]; dbgrid1.Canvas.Font.Color := clblack; Brush.Color := clwhite; // cor original do fundo FillRect(Rect); end; end; (Sender as TDBGrid).DefaultDrawDataCell(Rect, Field, State); end; abraço -
Existe algo a respeito no forum .... faça uma pesquisa pelas palavras word, find e replace http://scriptbrasil.com.br/forum/index.php...&hl=replace abraço
-
Se no botão salvar voce guardar na variavel o numero gerado, não vai atrapalhar em nada a rede, pois só voce terá esse numero .... se outro usuário salvar tambem, ele já terá um outro numero abraço
-
Veja como fica muito mais simples uses DateUtils; Function ProximoDiaUtil (dData : TDateTime) : TDateTime; begin if DayOfWeek(dData) = 7 then dData := dData + 2 else if DayOfWeek(dData) = 1 then dData := dData + 1; ProximoDiaUtil := dData; end; procedure TForm1.DateTimePicker1Change(Sender: TObject); var s : string; begin s := datetostr(ProximoDiaUtil(DateTimePicker1.Date)); label1.Caption := s; end; abraço
-
Siga este exemplo Criando Tabelas no Firebird 1.5 com o IBExpert http://www.devmedia.com.br/articles/viewcomp.asp?comp=4103 O processo é o mesmo para o Firebird 2.1 abraço
-
o erro esta no aninhamento dos ifs refaça a lógica dos Ifs , procure faze-los separadamente que voce encontrará o erro abraço
-
(Resolvido) Mudar cor de Fonte de QRBandText
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
exemplo procedure TForm1.QRBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin if tipo = 'S' then QRDBText1.Font.Color := clRed else QRDBText2.Font.Color := clBlue; end; abraço -
OK ... veja este codigo ... Select * from TESTE where COD = :CODI Quando voce clicar no botão salvar o dbgrid ficará vazio em virtude da passagem do parametro CODI que é autoincremento, pois quando voce fechar e abrir a tabela o campo COD estará com outro valor procedure TForm1.Button1Click(Sender: TObject); var TD: TTransactionDesc; begin if not SQLConnection1.InTransaction then begin TD.TransactionID := 1; TD.IsolationLevel := xilREADCOMMITTED; SQLConnection1.StartTransaction(TD); try ClientDataSet1.ApplyUpdates(-1); SQLConnection1.Commit(TD); ClientDataSet1.Active := FALSE; ClientDataSet1.Active := TRUE; except SQLConnection1.Rollback(TD); end; end; end; Para saber o codigo que foi gerado pelo banco voce pode pegar o valor gerado e jogá-lo em uma variavel .... para pegar o valor voce deve fechar e abrir a tabela ou dar um refresh, ir para o ultimo registro, ler o campo e jogá-lo em uma variavel de controle. abraço