-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
coloca ai o codigo onde o programa salva o nome do cliente.
-
lista ai quais os eventos deste componente ... pra poder te dar uma força.
-
Fonte ActiveDelphi ... OBS este codigo com um pouco de imaginação pode ser a base de um jogo da memoria. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, Buttons; type TForm1 = class(TForm) Image1: TImage; Image2: TImage; BitBtn1: TBitBtn; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.BitBtn1Click(Sender: TObject); var Img1, Img2: TStream; I: integer; Dif: boolean; Ch1, Ch2: char; begin // cria dois stream´s Img1 := TMemoryStream.Create; Img2 := TMemoryStream.Create; // copia o conteúdo dos bitmaps para os stream´s Image1.Picture.Bitmap.SaveToStream(Img1); Image2.Picture.Bitmap.SaveToStream(Img2); // verifica se são diferentes no tamanho e depois no conteúdo Dif := (Img1.Size <> Img2.Size); I := 0; Img1.Position := 0; Img2.Position := 0; //se você quiser comparar já pelo tamanho da imagem coloca um if q nem passa pelo looping //verificando o conteudo da imagem.. // if not dif then while not Dif and (I < Img1.Size) do begin Img1.Read(Ch1, 1); Img2.Read(Ch2, 1); if Ch1 <> Ch2 then begin // verifica se existe diferenca na mesma posiçao, isso significa q as imagens já são diferentes Dif := (Ch1 <> Ch2); break; //sai da repeticao end; Inc(I); end; // libera os strem´s da memória Img1.Free; Img2.Free; // exibe mensagens de acordo com o resultado if Dif then Showmessage('As imagens são diferentes.') else Showmessage('As imagens são iguais.'); end; end.
-
No evento OnDrawColumnCell do dbgrid use: if (Column.Field.FieldName = 'Qtdfinal_estoque') then begin if dm.ZTpecas.FieldByName('Qtdfinal_estoque').value <= 10 then begin DBGrid1.Canvas.Font.Color:= clRed; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end else begin DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end; OBS: Todos os registros do campo 'Qtdfinal' que forem menor ou igual a 10 ficarão em cor vermelha e os demais em preto
-
(Resolvido) Como Calcular Número De Aulas Excedidas E Atribuir A
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
a) Pelo que entendi do seu codigo voce esta contabilizando as aulas como sendo data e hora, ou seja, uma data e uma hora conta como sendo 1 aula. B) voce definiu TxtMoto: TEdit; TxtCarro: TEdit; mas não achei a definição de TxtExtCarro e TXTExtMoto c) como voce procura pelo componente usando " TEdit( FindComponent( 'ed_'..." não achei onde voce trabalha com o TxtMoto e o TxtCarro. d) entretanto nesta parte do codigo, acho que voce pode fazer o que está querendo ( após ser marcado as 15 aulas ai contasse como aulas extras e registrasse no outro edit.) procedure Tfrmpraticas.ConsultaAula; Begin With QryPra do Begin Close; Sql.Clear; Sql.Add ('Select P.Aluno, P.Instrutor, P.Data, P.Horario, P.Categoria, P.Aluno From Praticas P,' +'Instrutores I Where P.Aluno=' + txtcod.Text + 'AND P.Status=1 AND I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario'); Open; end; if QryPra.recordcount <= 15 then begin // quantidade de aulas menor ou igual a 15 end else begin // quantidade de aulas maior que 15 end; end; Nesta rotina voce pode implementar o resto do codigo para fazer o que esta querendo, é mais ou menos isto ? -
Neste endereço tem informações interessantes a este respeito, de uma pesquisada: http://www.techzonept.com/archive/index.php/t-55099.html
-
Então da uma olhada neste codigo... ele verifica as USBs http://www.sabereletronica.com.br/download...9/usb_teste.zip
-
(Resolvido) Como Calcular Número De Aulas Excedidas E Atribuir A
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
voce atribui o numero de aulas do aluno no txtCod.Text ? onde esta a procedure ConsultaAula ? onde esta o registro das aulas que o aluno já fez ? voce pode me explicar a sua lógica no programa ? -
Se voce estiver utilizando os componentes DSPack no evento oncreate do form voce pode usar: procedure TVideoForm.FormCreate(Sender: TObject); var i: integer; Device: TMenuItem; begin SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory); if SysDev.CountFilters > 0 then for i := 0 to SysDev.CountFilters - 1 do begin Device := TMenuItem.Create(Devices); Device.Caption := SysDev.Filters[i].FriendlyName; Device.Tag := i; Device.OnClick := OnSelectDevice; Devices.Add(Device); end; if (FilterGraph.Active = false) and (Device.Caption = '') then begin showmessage('WEBCAM desconectada!'); VideoForm.Close; end; end; OBS: Se a webcam estiver conectada o Device.Caption não ficara vazio e o FilterGraph estará ativo
-
(Resolvido) Como Calcular Número De Aulas Excedidas E Atribuir A
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
robinho ... acho que voce esta gastando codigo de graça, a criação de labels e edits voce esta fazendo do jeito mais dificil .... (voce esta criando 7 edits em tempo de execução e definindo suas propriedades) ... porque voce não utiliza os componentes da paleta do delphi e atribui as propriedades diretamente no componente ? A parte do codigo onde voce atribui as aulas não esta neste codigo ... É isto mesmo que voce está querendo ? -
A unica maneira que eu conheço é atraves de skins, e neste caso, voce poderia usar: estilo windows xp WinXPBlue.skn WinXPGreen.skn WinXPSilver.skn estilo windows vista VistaLight.skn Vista.skn Vista2.skn estilo office OfficeXP.skn Office2007_Remix.skn Office2007_Dark.skn Office2007.skn obs: já existem posts a este respeito no forum.
-
Antes de mais nada, verifque as configurações regionais do seu windows, e veja como esta definida a data, pois isto interfere no resultado.
-
Não Permitir Cadastrar O Mesmo Codigo Na Tabela
pergunta respondeu ao Michel Carneiro de Jhonas em Delphi, Kylix
Existem algumas maneiras: voce pode bloquear registros duplicados no proprio banco de dados ou pode durante a entrada de dados fazer uma verificação no arquivo se o registro já existe, ex: AtestaX_IB.First; if AtestaX_IB.Locate('EMPRESA',trim(Edit1.text),[loPartialKey]) then begin showmessage('Este registro já existe!'); exit; end else begin showmessage('Registro valido!'); // restante do codigo para inclusão do registro end; OBS: Neste caso vai verificar se o nome da empresa já existe, se existir da mensagem e sai fora da procedure, se não, inclui o novo registro. Ou ainda usar uma instrução SQL com passagem de parametro que ficaria mais eficaz SELECT * FROM CADASTRO WHERE EMPRESA = :NEMP // parametro que vai receber o nome da empresa ORDER BY EMPRESA Fica muito mais rapido, e se o recordcount for > 0 significa que o registro já existe, se for = 0 , o registro não existe e pode ser incluido. -
Como Pausar A Execução De Um Ontimer Até A Execução De Um Even
uma questão respondeu Jhonas em Delphi, Kylix
Colega ... um comando for dentro de um timer fará com que esse for seja reiniciado toda a vez a cada segundo, voce até poderia parar o timer com o comando < Timer1.Enabled := false; > e esperar a resposta da placa no evento OnRxChar do ComPort, entretanto ao habilitar o timer novamente a variavel i do for seria 1 novamente, e neste caso, a variavel teria que ser declarada fora do timer. vou exemplificar: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; placas : integer = 0; cont : integer = 0; implementation {$R *.DFM} procedure TForm1.Timer1Timer(Sender: TObject); begin //Controle para enviar o Pacote a todas as placas cont:= cont + 1; if cont > placas then //Placas contem o numero total de placas cadastradas begin Timer1.Enabled := false; exit; end; //Carrega a variavel com o Numero da Placa Numero := dtmdispenser.sdsplacaenviaCODIGO.AsInteger; //Envia os Bytes do Pacote pela serial Comdispenser.Write(Inicio,1); Comdispenser.Write(Inicio2,1); Comdispenser.Write(Tamanho,1); Comdispenser.Write(Numero,1); Comdispenser.Write(Funcao,1); Comdispenser.Write(Ordem,1); Comdispenser.Write(CRC,1); Comdispenser.Write(Fim,1); Comdispenser.Write(Fim2,1); //pega o proximo resgitro dtmdispenser.sdsplacaenvia.Next; //AQUI EU PRECISO FICAR ESPERANDO QUE CHEGUE UM PACOTE NA COMPORT PARA DEPOIS DE CHEGAR Timer1.Enabled := false; End; end; OBS: no evento OnRxChar do ComPort, assim que a resposta for obtida então voce aciona o timer novamente para a proxima leitura < Timer1.Enabled := true; > Vale lembrar que a propriedade interval do timer deve ser um valor que permita o envio das informações, acho que de 3 a 5 segundos , ou seja , o interval deve estar entre 3000 e 5000. Em função do exemplo voce deve fazer a modificação no seu codigo. -
[resolvido]opendialog (nome Do Arquivo, Tamanho)
pergunta respondeu ao schaukoski de Jhonas em Delphi, Kylix
Ai vai a dica: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; Label1: TLabel; Label2: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} function TamArquivo(Arquivo: string): Integer; begin with TFileStream.Create(Arquivo, fmOpenRead or fmShareExclusive) do try Result := Size; finally Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var tamanho : real; begin if OpenDialog1.Execute then begin tamanho := TamArquivo(OpenDialog1.FileName); tamanho := (tamanho / 1024); Label1.Caption:= 'Nome do Arquivo = ' + copy(OpenDialog1.FileName,pos('\',OpenDialog1.FileName)+1,20); Label2.Caption:= 'Tamanho do Arquivo = ' + format('%n',[tamanho]) + ' Kb'; end; end; end. Obs: O valor do tamanho do arquivo que voce vai ver no windows é arredondado. -
{ A impressora Epson LX-300 dispõe de um comando que justifica o texto. Este recurso é interessante, pois com ele podemos continuar a enviar os comandos de formatação de caracteres como condensado, negrito, italico, expandido, etc. Para o exemplo abaixo: - Coloque um botão no form; - Altere o evento OnClick deste botão como abaixo: } procedure TForm1.Button1Click(Sender: TObject); const cJustif = #27#97#51; cEject = #12; { Tamanho da fonte } c10cpi = #18; c12cpi = #27#77; c17cpi = #15; cIExpandido = #14; cFExpandido = #20; { Formatação da fonte } cINegrito = #27#71; cFNegrito = #27#72; cIItalico = #27#52; cFItalico = #27#53; var Texto: string; F: TextFile; begin Texto := c10cpi + 'Este e um teste para impressora Epson LX 300. ' + 'O objetivo e imprimir texto justificado sem deixar ' + 'de usar formatacao, tais como: ' + cINegrito + 'Negrito, ' + cFNegrito + cIItalico + 'Italico, ' + cFItalico + c17cpi + 'Condensado (17cpi), ' + c10cpi + c12cpi + '12 cpi, ' + c10cpi + cIExpandido + 'Expandido.' + cFExpandido + ' Este e apenas um exemplo, mas voce podera adapta-lo ' + 'a sua realidade conforme a necessidade.'; AssignFile(F, 'LPT1'); Rewrite(F); try WriteLn(F, cJustif, Texto); WriteLn(F, cEject); finally CloseFile(F); end; end; Observações Modifique o codigo para voce usar quando imprimir com o FortesReport, ou seja, use os comandos de justificação e tamanho e formatação de fontes de texto antes de enviar o comando de impressão. -------------------------------------------------------------------------------------------------------------------------- Inclua na seção uses: Printers { Coloque este código no OnClick de um botão } with Printer.Fonts do if IndexOf('Draft 10cpi') >= 0 then ShowMessage('A impressora possui a fonte.') else ShowMessage('A impressora NÃO possui a fonte.'); Observações Isto pode ser útil quando queremos usar fonte da impressora quando for uma matricial ou fonte do Windows quando for uma Jato de Tinta ou Laser.
-
(Resolvido) Como Calcular Número De Aulas Excedidas E Atribuir A
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
Posta a parte do codigo em que voce marca aulas praticas ... ai tento te dar uma força. -
Utilizar Um Botão Do Flash No Delphi
pergunta respondeu ao Vivendo&Aprendendo de Jhonas em Delphi, Kylix
Passeando na Net , pesquisando sobre um outro assuto, me deparei com o que voce esta querendo, um componente ShockwaveFlash que possui os eventos : FOnMouseDown: TMouseEvent; FOnMouseUp: TMouseEvent; FOnMouseMove: TMouseMoveEvent; FOnClick: TNotifyEvent; fLockMouseClick: boolean; WasDown: boolean; FOleObject: IOleObject; Para download do componente: http://www.delphiflash.com/codepas/flashax.zip Para visualizar o codigo fonte: http://www.delphiflash.com/library-play-swf-from-stream.php -
Voce pode baixar a apostila de quick report neste endereço para ter uma ideia de como montar o relatorio http://www.apostilando.com/download.php?co...ategoria=Delphi http://www.univel.br/pamplona/quickreport.zip
-
Corrigindo: FrmMenuPrin.StatusBar1.Panels[2].Text:='Usuario: '+FrmLogin.EdtApelido.Text + ' - '+ Dm.Tab_Usuarios.UsuDepto.AsString; OBS: o operador perdido foi o '+' que ficou faltando
-
Complementando a informação do Micheus, neste endereço esta mais simplificado a questão do cupom fiscal http://www.presence.com.br/site/pagina_tef...099,00124,00129
-
Vai ma dica: PROCURAR COMPUTADORES DA REDE procedure FindComputers(Workgroup: string; aResList: TStrings); var eNumHandle : THandle; WorkgroupRS : TNetResource; Buf : array[1..500] of TNetResource; BufSize : DWORD; Entries : DWORD; Result : integer; sComputer: String; begin if not Assigned(aResList) then Exit; aResList.Clear; WorkGroup := Workgroup + #0; FillChar(WorkGroupRS, SizeOf(WorkGroupRS), 0); with WorkgroupRS do begin dwScope := 2; dwType := 3; dwDisplayType := 1; dwUsage := 1; lpRemoteName := @Workgroup[1]; end; WNetOpenEnum(Resource_GlobalNet, ResourceType_Any, 0, @WorkgroupRS, ENumHandle); repeat Entries := 1; BufSize := SizeOf(Buf); Result := WNetENumResource(ENumHandle, Entries, @Buf, BufSize); if (result = NO_Error) and (Entries = 1) then begin sComputer:= StrPas(Buf[1].lpRemoteName); aResList.Add(Copy(sComputer, 3, Length(sComputer)-2)); end; until (Entries <> 1) or (Result <> NO_Error); WNetCloseENum(ENumHandle); end;
-
Como Saber O Nome Da Janela Em Que O Cursor Do Mouse Está Posicionado
pergunta respondeu ao Denso de Jhonas em Delphi, Kylix
Micheus .. concordo com voce, mas entendi que ele quer o nome da janela em foco ( ativa ) é isto ? e pelo codigo que ele postou , dexei pra ele mostar apenas um nome. Só se entendi errado ... -
O problema vem do objeto de Impressora. Antes da chamada Executar, Printer.PrintIndex é corretamente fixo. O print dialog seta a impressora para um índice inválido quando você clica em " ok " para imprimir. É por isso que acontece o erro:( "Printer index out of range".) Índice da " impressora fora do alcance ". voce pode corrigir de duas maneiras: QuickRep.PrinterSettings.PrinterIndex := Printer.PrinterIndex; QuickRep.PrinterSettings.ApplySettings(QuickRep.Printer); ou ainda pode fazer desta maneira usando o PrintDialog: with PrintDialog1 do begin PrintDialog1.FromPage := 1; PrintDialog1.ToPage := QuickRep.PageNumber; PrintDialog1.MaxPage := QuickRep.PageNumber; if Execute = true then begin QuickRep.PrinterSettings.FirstPage := FromPage; QuickRep.PrinterSettings.LastPage := ToPage; QuickRep.PrinterSettings.Copies := Copies; QuickRep.PrinterSettings.PrinterIndex := Printer.PrinterIndex; QuickRep.PrinterSettings.ApplySettings(QuickRep.Printer); end; end;
-
Como Saber O Nome Da Janela Em Que O Cursor Do Mouse Está Posicionado
pergunta respondeu ao Denso de Jhonas em Delphi, Kylix
Ai vai a dica: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var H: HWND; WindowName: Array[0..255] of Char; ClassName: Array[0..255] of Char; begin H := GetForegroundWindow; GetWindowText(H, WindowName, SizeOf(WindowName)); GetClassName(H, ClassName, SizeOf(ClassName)); Label1.Caption := 'Nome-> '+WindowName+' / Classe-> '+ClassName; end; end.