Ir para conteúdo
Fórum Script Brasil

paulobergo

Membros
  • Total de itens

    295
  • Registro em

  • Última visita

Tudo que paulobergo postou

  1. Preciso instalar as extensões do Frontpage no meu Linux e não consigo (mas detalhes, no final da mensagem). O Linux que instalei é o Kurumin (6, versão 1alpha). Já instalei também o Apache e o MySQL. Não fiz nada personalizado. Assim, tenho um usuário com o nome kurumin e o root. O Apache está no diretório /etc/apache2 Este diretório tem os subdiretórios conf.d, mods-available, mods-enabled, sites-available, sites-enabled, ssl e os arquivos apache2.conf, envvars, httpd.conf, magic, ports.conf e README. Baixei os arquivos fp50.linux.tar.Z e fp_install.sh, ambos devidamente salvos no diretório /usr/local Segui as orientações do documento da Microsoft (Article 202198) e observei diferenças entre as configurações do Apache antigas e as atuais, mas consegui editar os arquivos e alterar os dados pedidos... Mas na hora de executar o fp_install.sh, recebo uma mensagem de acesso negado. Fiz isso: Botão K (equivalente ao Iniciar) Configuração do Sistema Usar o Root Root Shell (abrir terminal como root) Abre uma janela (tipo prompt do MsDos) com este prompt: root@sia2k:/home/kurumin# Digito: cd /usr/local (onde salvei os arquivos) e o prompt vai para: roor@sia2k:/usr/local Digito: ./fp_install.sh e recebo a mensagem: Permissão negada. O que está errado? Alguém já conseguiu ativar as extensões do Frontpage? Grato por qualquer ajuda! O porquê de tudo isto: Estava na minha quinta tentativa de usar o Linux... digo ESTAVA porque finalmente consegui instalar o Kurumin 6 (versão 1alpha) e, exceto pela placa de som CMI8330 não detectada, ele está funcionando... quase... ok Antes, sofri com o TechLinux 2.0 e 3.0, e duas versões de um tal Conectiva, que me fizeram desistir do projeto de desenvolvimento de um software para levantamento rodoviário usando o Linux como plataforma e tive que continuar com o Windows mesmo... claro que tive a colaboração para desistir por parte de muitos afficionados pelo Linux que, ao invés de ajudar, limitavam-se a dizer sempre que a versão A era a melhor que a B, que a microsft isso, que o bgates aquilo, que delphi era ruim... que bom era C++, e assim por diante... mas isso foi há três anos atrás... Há pouco mais de um mês, um amigo me enviou um CD do Kurumin (versão 3, desatualizada) e resolvi experimentar, e funcionou muito bem... Já consegui instalar o Apache e também o MySQL (pelos ícones mágicos)... conectar à Internet também... Agora estou precisando, para finalizar, instalar as extensões do Frontpage no Apache. Meu objetivo é, agora, passar todas as páginas que ficam hospedadas no IIS do XP (que estão em modo não-seguro, devido à partição no XP ser Fat32) para o Apache2 no Linux... Preciso das extensões do Frontpage porque todas as páginas que estão no XP usam estas extensões... Então, baixei os arquivos para fazer a instalação (fp50.linux.tar.Z e o fp_install.sh), e os salvei na pasta /usr/local O roteiro de instalação (Article ID 202198 da Microsoft) está bem claro, mas vejo que o Linux instalado (versão Kurumin) não manteve as mesmas configurações do Apache (nomes dos diretórios e arquivos de configuração .conf por exemplo)... Toda a instalação que fiz foi automática, ou seja, não escolhi nada "personalizado". Como usuário novissimo, claro que fico muito perdido em meio a definições muito diferentes da "gui" microsoft... e, infelizmente, não tenho muito tempo para me dedicar a estudar o Linux, já que sou desenvolvedor de aplicativos fiscais e também interventor em ECF... Daí, peço paciência por parte dos companheiros! De qualquer forma, agradeço qualquer colaboração.
  2. Se os dados estão gravados em uma tabela (por exemplo, acesso.db), que poderiam conter estes dados (exemplo) registro codigo nome entroudata entrouhora saiudata saiuhora 1 028392 SIMAO 04/28/2006 10:00:00 04/28/2006 14:00:00 2 038839 JOANA 04/28/2006 10:01:00 04/28/2006 17:45:13 3 028392 SIMAO 05/28/2006 09:10:15 05/28/2006 13:59:04 . . . Para pesquisar toda a "movimentação" do SIMAO: select * from acesso.db where codigo='028392' ou select * from acesso.db where codigo='028392' and entroudata between '01/01/2006' and '12/31/2006' Isso...
  3. paulobergo

    Registro

    Não entendi muito bem... mas, vamos lá... A seguinte query: select nome, codigoean, preço, saldo from ':minipreco:estoque.dbf' where ultimocalc <= '05/31/2006' retorna os produtos que ainda não tiveram o seu preço alinhado desde a data de 31 de maio último, da tabela chamada estoque (visual dbase), por qualquer motivo. O gerente, então, determina que os preços destes produtos serão alinhados novamente, porém, sem corrigi-los (aumenta-los ou diminuilos), apenas registrando que eles já encontram-se atualizados. Assim, no form, ele coloca o índice de ajuste = 1. A query que irá atualizá-los será esta: update ':minipreco:estoque.dbf' set ultimocalc='06/16/2006', preço=preço*1 where ultimocalc <= '05/31/2006' Lembrando que, na primeira query, foi usado o comando Query1.Open (para abrir a consulta apenas) e na segunda foi usado o comando Query1.ExecSQL (para executar o comando pedido na query). Seria mais ou menos isso que você queria saber?^ Ou precisa realmente é de código?
  4. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; CheckBox1: TCheckBox; Edit1: TEdit; Edit2: TEdit; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; fiArquivo: TIniFile; implementation {$R *.dfm} Function bSalvar(iNumero: LongInt; sTexto: String; bCondicao: Boolean): Boolean; Var bStatus: Boolean; Begin bStatus := False; Try fiArquivo := TIniFile.Create('c:\temp\teste.ini'); fiArquivo.WriteInteger('SecaoDados','iNumero' ,iNumero); fiArquivo.WriteString( 'SecaoDados','sTexto' ,sTexto); fiArquivo.WriteBool( 'SecaoDados','bCondicao',bCondicao); bStatus := True; Finally fiArquivo.Free; End; bSalvar := bStatus; End; Function bLer(Var iNumero: LongInt; Var sTexto: String; Var bCondicao: Boolean): Boolean; Var bStatus: Boolean; Begin bStatus := False; Try fiArquivo := TIniFile.Create('c:\temp\teste.ini'); iNumero := fiArquivo.ReadInteger('SecaoDados','iNumero' ,Inumero); sTexto := fiArquivo.ReadString( 'SecaoDados','sTexto' ,sTexto); bCondicao := fiArquivo.ReadBool( 'SecaoDados','bCondicao',bCondicao); bStatus := True; Finally fiArquivo.Free; End; bLer := bStatus; End; Procedure TForm1.Button1Click(Sender: TObject); Begin If not bSalvar(StrToInt(Edit1.Text),Edit2.Text,CheckBox1.Checked) then ShowMessage('Ops! houve uma falha ao gravar!'); {EndIf} End; Procedure TForm1.Button2Click(Sender: TObject); Var iNum: LongInt; sTxt: String; bLog: Boolean; Begin If not bLer(iNum, sTxt, bLog) then ShowMessage('Ops! houve uma falha ao ler') Else Begin With Memo1.Lines do Begin Clear; Add('iNum='+IntToStr(iNum)); Add('sTxt='+sTxt); IF bLog then Add('bLog=True') Else Add('bLog=False'); {EndIf} End;{With Memo1.Lines} End; {EndIf} End; End. Delphi: 3(ok), 4(ok) 6(ok)
  5. Oi. Meu Windows98 SE original (com caixinha, versão Full) realmente não dá boot pelo CD. Já as outras versões OEM dão boot normalmente, pelo CD... Tente conseguir um disquete de boot do 98...
  6. Preciso instalar as extensões do Frontpage no meu Linux e não consigo (mas detalhes, no final da mensagem). O Linux que instalei é o Kurumin (6, versão 1alpha). Já instalei também o Apache e o MySQL. Não fiz nada personalizado. Assim, tenho um usuário com o nome kurumin e o root. O Apache está no diretório /etc/apache2 Este diretório tem os subdiretórios conf.d, mods-available, mods-enabled, sites-available, sites-enabled, ssl e os arquivos apache2.conf, envvars, httpd.conf, magic, ports.conf e README. Baixei os arquivos fp50.linux.tar.Z e fp_install.sh, ambos devidamente salvos no diretório /usr/local Segui as orientações do documento da Microsoft (Article 202198) e observei diferenças entre as configurações do Apache antigas e as atuais, mas consegui editar os arquivos e alterar os dados pedidos... Mas na hora de executar o fp_install.sh, recebo uma mensagem de acesso negado. Fiz isso: Botão K (equivalente ao Iniciar) Configuração do Sistema Usar o Root Root Shell (abrir terminal como root) Abre uma janela (tipo prompt do MsDos) com este prompt: root@sia2k:/home/kurumin# Digito: cd /usr/local (onde salvei os arquivos) e o prompt vai para: roor@sia2k:/usr/local Digito: ./fp_install.sh e recebo a mensagem: Permissão negada. O que está errado? Alguém já conseguiu ativar as extensões do Frontpage? Grato por qualquer ajuda! O porquê de tudo isto: Estava na minha quinta tentativa de usar o Linux... digo ESTAVA porque finalmente consegui instalar o Kurumin 6 (versão 1alpha) e, exceto pela placa de som CMI8330 não detectada, ele está funcionando... quase... ok Antes, sofri com o TechLinux 2.0 e 3.0, e duas versões de um tal Conectiva, que me fizeram desistir do projeto de desenvolvimento de um software para levantamento rodoviário usando o Linux como plataforma e tive que continuar com o Windows mesmo... claro que tive a colaboração para desistir por parte de muitos afficionados pelo Linux que, ao invés de ajudar, limitavam-se a dizer sempre que a versão A era a melhor que a B, que a microsft isso, que o bgates aquilo, que delphi era ruim... que bom era C++, e assim por diante... mas isso foi há três anos atrás... Há pouco mais de um mês, um amigo me enviou um CD do Kurumin (versão 3, desatualizada) e resolvi experimentar, e funcionou muito bem... Já consegui instalar o Apache e também o MySQL (pelos ícones mágicos)... conectar à Internet também... Agora estou precisando, para finalizar, instalar as extensões do Frontpage no Apache. Meu objetivo é, agora, passar todas as páginas que ficam hospedadas no IIS do XP (que estão em modo não-seguro, devido à partição no XP ser Fat32) para o Apache2 no Linux... Preciso das extensões do Frontpage porque todas as páginas que estão no XP usam estas extensões... Então, baixei os arquivos para fazer a instalação (fp50.linux.tar.Z e o fp_install.sh), e os salvei na pasta /usr/local O roteiro de instalação (Article ID 202198 da Microsoft) está bem claro, mas vejo que o Linux instalado (versão Kurumin) não manteve as mesmas configurações do Apache (nomes dos diretórios e arquivos de configuração .conf por exemplo)... Toda a instalação que fiz foi automática, ou seja, não escolhi nada "personalizado". Como usuário novissimo, claro que fico muito perdido em meio a definições muito diferentes da "gui" microsoft... e, infelizmente, não tenho muito tempo para me dedicar a estudar o Linux, já que sou desenvolvedor de aplicativos fiscais e também interventor em ECF... Daí, peço paciência por parte dos companheiros! De qualquer forma, agradeço qualquer colaboração.
  7. Grato pela ajuda... Infelizmente, a expressão em um campo do tipo TAggregates não aceita a função Round... Por exemplo: sum(Round(precobase)*quantidade) não funciona. Eu precisava realmente descobrir uma forma de fazer com que aceitasse os campos calculados, principalmente para simplificar o código e contemplar todas as situações tributárias que hoje são calculadas tanto na versão stringgrid (delphi) como na versão array (clipper). Para que você tenha uma idéia, o valor do produto é obtido assim, quando, por exemplo, temos um produto com redução de base de cálculo de ICMS (em que o desconto deve ser repassado para o consumidor, obrigatoriamente): precodopedido = x (um valor qualquer) percentualdoimpostodispensado = ((100-basedecalculodoICMS)*aliquotadoICMS)/10 // Diferimento, em MG, em vendas para produtores rurais, por exemplo. precounitario = precodopedido*((100-percentualdoimpostodispensado)/100) // o preço unitario aumenta para, com o desconto, voltar ao preço original do pedido. valorproduto = quantidade*precounitario ICMSbasedecalculo = (valorproduto*basedecalculodoICMS)/100 ICMSValor = (ICMSbasedecalculo*ICMSaliquota)/100 ... e assim por diante... sem contar as fórmulas do IPI, da Substituição Tributária, etc... Outra opção que tentei foi criar um stringgrid associado à tabela... assim, cada modificação nos campos da tabela provoca a totalização e os cálculos das colunas equivalentes no Stringgrid... por enquanto está dando certo... porém com mais código! De qualquer forma, grato pela colaboração!!
  8. Importante, sobre OnChange... Ao tomar decisões a partir do evento OnChange, é preciso desativar esta propriedade antes de verificar (ou alterar) o seu conteúdo ou executar a tarefa que se quer com os dados do campo preenchido - se estiverem corretos. Veja neste exemplo que só vamos transformar o nome "paulo" de minúsculo para maiúsculo se a comparação for completa. Procedure TForm1.Edit1Change(Sender: TObject); Begin Edit1.OnChange := Nil; If Edit1.Text='paulo' then Edit1.Text := 'PAULO'; {EndIf} Edit1.OnChange := Edit1Change; End; ********** Assim evita-se que o evento seja chamado recursivamente até dar um estouro de pilha. Quanto à sua pesquisa, seria melhor fazê-la a partir de um evento keypress e, quando à pesquisa com datas, é importante definir uma faixa de possibilidade da pesquisa. Por exemplo, como só mantemos os registros de notas fiscais por cinco anos, não permitimos uma pesquisa na tabela de notas fiscais com a data 01/02/1998... ou mesmo a pesquisa de uma data que não existe ainda , como as notas fiscais emitidas no mês que vem (28/05/2006)... Veja neste exemplo que a data só será pesquisada se o usuário teclar Enter no campo maskedit e se a data for válida... Coloque um maskedit (##/##/####) e um label no form. var Form1: TForm1; dData2SetKey, dData1, dData2: TDateTime; sData2SetKey: String; bDataOk: Boolean; implementation {$R *.dfm} Procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char); Begin If (key=#13) then Begin Try dData2SetKey := StrToDate(MaskEdit1.Text); bDataOk := True; Except dData2SetKey := StrToDate('01/01/1900'); bDataOk := False; End; If bDataOk then Begin // Data ok. Ver se é válida. If (dData2SetKey>=dData1) and (dData2SetKey<=dData2) then Begin // A data é válida. sData2SetKey := DateToStr(dData2SetKey); sData2SetKey := Copy(sData2SetKey,4,3)+ Copy(sData2SetKey,1,3)+ Copy(sData2SetKey,7,4); Label1.Caption := 'Pesquisando por '+sData2setKey; // // Aqui vai a sua pesquisa! ************************************************ // End Else Label1.Caption := 'Data Não Permitida para pesquisa.'; {EndIf (dData2SetKey...} End Else Label1.Caption := 'Data Inválida'; {EndIf bDataOk} End; {EndIf} End; Procedure TForm1.FormCreate(Sender: TObject); Begin // Para notas fiscais, só posso pesquisar de hoje até cinco anos atrás. Então a faixa (range) será dData1 := Date()-(365*5); dData2 := Date(); End; End. Abraços!
  9. Olá. Já me deparei com este problema... e como não consegui resolver (por exemplo, descobri que às vezes o programa achava que a tabela ainda estava em uso - sendo este talvez um dos motivos da falha), eu passei a usar o CopyFile(PChar('c:\dados\tabela1.db'),PChar('c:\backup\tabela1.db'),false) e depois verificar as datas e tamanhos para saber se realmente copiou... Aí funcionou.... Quanto ao arquivo poder estar sendo considerado como "ainda aberto", descobri isso quando, depois de uma falha na tentativa de cópia, abri o DbExplorer e tentei criar um campo temporario (alter table 'tabela1.db' add temp integer) e recebi a mensagem "table busy"... sendo que a tabela não estava aberta (openfiles no XP e netwatch no win98 para checar)... Espero ter ajudado! P.Bergo
  10. Oi! Gostaria de saber se alguém sabe como criar um campo agregado em um dataset que aceite uma expressao contendo um campo calculado. Explicando melhor: Tentando transformar um stringgrid para lançamento de notas fiscais em um dbgrid, deparei com o problema de não conseguir criar um campo agregado que totalize uma coluna, sendo esta coluna um campo "calculado". Com isso, tenho problemas de arredondamento nas várias colunas que precisam tratar precos e quantidades (com decimais variáveis) e valores em moeda (2 decimais). Exemplo: Campos: descricao (tipo caractere) quantidade (tipo numerico) preço (tipo numerico) valor (tipo currency, calculado, sendo = preço * quantidade) total (tipo agregado, sendo a soma do preço x valor = sum(preço * quantidade)) descricao quantidade preço valor Calculadora....... 1 x R$ 2,226 = R$ 2,23 Caneta............ 1 x R$ 2,226 = R$ 2,23 Total R$ 4,45 Gostaria, então, que o campo agregado aceitasse a expressão sum(valor). Assim, o total seria de 4,46 (o correto)... Além disso, tenho outros campos na mesma situação, como: valor do ipi do produto = (valor do produto * aliquota) / 100, valor do icms do produto = ((valor do produto * base de calculo) * aliquota) / 100, e assim por diante...
  11. Oi. Isto não é uma dica, mas apenas um relato pessoal... Eu venho do Clipper e, ao começar a migrar meus programas para o Delphi (comecei com o 3), deparei com uma enormidade de opções de bancos de dados em redes, nas quais eu ainda tinha que ter muita preocupação com travamento de arquivos e registros e outras coisas ligadas ao acesso a bancos de dados compartilhados em redes e então, de uns três anos e meio para cá, resolvi usar somente o SQL (da própria BDE), criando programas que funcionam como "serviços" nos servidores (XPs prof) e que são os únicos responsáveis por inserir, excluir e alterar os dados. Para consulta, uso principalmente CGI ou ISAPI (sob o IIS do XP). Nesse esquema (cliente-servidor), os dados não trafegam na rede... com isso, já são três anos sem dados corrompidos e sem ninguém reclamar que um computador travou e por isso travou também arquivos que estavam abertos... Ah... uso somente tabelas do tipo Visual Dbase 7 ou 2, com índices do tipo MDX, que aceleram muitissimo o aceso aos dados... Espero ter ajudado!
  12. Que tal dar uma melhorada no código... With querylogin do Begin Close; DataBaseName := 'acme'; SQL.Add('select * from usuario, perfil'); SQL.Add('where (usuario.nivel='+#39+perfil.id+#39+')'); SQL.Add(' and'); SQL.Add(' (fantasia='+#39+valornome.Text+#39+')'); SQL.Add(' and'); SQL.Add(' (senha='#39+valorsenha.Text+#39+')'); SQL.SaveToFile('c:\temp\savebeforeopen.txt'); Try Open; ShowMessage('Abriu!'); Except ShowMessage('Não abriu...'); End; End;{With querylogin} Antes de abrir, a query será salva no arquivo texto, e você pode testá-la no DbExplorer ou no montador de queries do Delphi.
  13. A tabela é paradox? Tentei criar uma tabela com o "." em um dos campos e deu erro... isso: create table teste ( cod.material char(13), descricao char(40) unidade char(3) ) já ... create table teste ( cod_material char(40), unidade char(3) ) funcionou... Tente usar isso... select cast(cod.material as char(40)) codigo, unidade from ...
  14. Também tinha esses problemas... hoje sempre crio e libero as queries (e stringlists também), assim: Var Query: TQuery; Lista: TStringList; Begin Query := TQuery.Create; Lista := TStringList.Create; Query.DataBaseName := 'acme'; // Processo as queries... // // // Finalmente, Query.Free // O mesmo com os stringlists Lista.LoadFromFile('c:\temp\nada.txt'); // Tarefas com a stringlist. // // // Finalmente, Lista.Free End;
  15. Oi.... Tenho as versões 3, 4 e 6 do Delphi e a opção de criar um serviço só existe no Delphi6 e você pode rodá-los no Windows XP Pro, 2000 e 2003. O jeito de programar é como fazer forms dentro de dll's e o mais importante é você colocar um flag para conseguir parar o serviço ou reiniciá-lo quando você quiser, sem ter que abrir as ferramentas administrativas (no meu caso, do XP e do 2000) para fazer isso. Para criar um serviço, no Delphi 6, é só abrir a opção File, New, Other, Service Application. Eu costumo sempre fazer um laço infinito, com uma pausa de 0001 de segundo, assim: While True do Begin Sleep(0001); Try Begin { Serviços (procedures, funções, etc. a serem executadas). } If FileExists('c:\windows\flag.txt') then Begin // Olha... alguém criou um arquivo com o nome de flag.txt na pasta c:\windows // e vamos apaga-lo DeleteFile(PChar('c:\windows\flag.txt')); End; {EndIf FileExists('c:\windows\flag.txt')} End; Except // Algum problema aconteceu... continuando... End; End;{While True} OK? Espero ter ajudado.
  16. paulobergo

    Arquivos .ini

    Tenta algo assim... Var Query: TQuery; slMeusArquivos: TStringList; iPosTamanho, iPosVersao, iLinha: Integer; sDescricaoSW, sVersaoSW, sTamanhoSW, sInBuffer: String; Begin slMeusArquivos := TStringList.Create; Query := TQuery.Create; // 1) Criando uma tabela, tipo VisualDBase 7. With Query do Begin DataBaseName := 'acme'; SQL.Clear; SQL.Add('create table '+#39+'tabelasw.dbf'+#39); SQL.Add('(item autoinc,'); SQL.Add(' descricao char(50),'); SQL.Add(' versao char(40),'); SQL.Add(' tamanho char(30))'; ExecSQL; Close; // 2) Criando um índice (.mdx), acelera pesquisa e gravação. SQL.Clear; SQL.Add('create index descricao on '+#39+'tabeasw.dbf'+#39+' (descricao)'); ExecSQL; Close; SQL.Clear; SQL.Add(''); End;{With Query} // 3) Criar uma lista de strings e obter o arquivo .Ini. slMeusArquivos := TStringList.Create; slMeusArquivos.LoadFromFile('c:\lista.ini'); iLinha := 1; // 4) Sequencialmente, obter os dados de cada "string" da lista, analisar o conteúdo e gravar. While iLinha<=slMeusArquivos.Count do Begin sInBuffer := slMeusArquivos.Strings[iLinha-1]; iPosVersao := Pos('Versão',sInBuffer); If iPosVersao>0 then Begin sDescricaoSW := Copy(sInBuffer,1,iPosVersao-1); sVersaoSW := Copy(sInBuffer,iPosVersao,(Length(sInBuffer)-iPosVersao)+1); End; {EndIf iPosVersao>0} iPosTamanho := Pos('Tamanho',sInBuffer); If iPosTamanho>0 then Begin sTamanhoSW := Copy(sInBuffer,iPosTamanho,(Length(sInBufer)-iPosTamanho)+1); Query.SQL.Strings[0] := 'insert into '+#39+'tabelasw.dbf'+#39+#13+#10+ '(descricao, versao, tamanho)'+#13+#10+ 'values'+#13+#10+ '('+#39+sDescricaoSW+#39+','+#13+#10+ #39+sVersaoSW+#39+','+#13+#10+ #39+sTamanhoSW+#39+')'; Query.ExecSQL; End; {EndIf iPosTamanho>0} Inc(iLinha} End;{While iLinha<=slMeusArquivos.Count} Query.Free; slMeusArquivos.Free;
  17. Você deseja imprimir diretamente para uma porta, certo? Veja, neste exemplo, como imprimir o texto guardado em uma stringlist, diretamente para um arquivo, para uma porta local de impressora ou para uma porta de impressora compartilhada. slTexto.Add('impressao de texto'); slTexto.Add('Avanco de pagina apos esta linha'+chr(12)); slTexto.Add('impressao na pagina seguinte'); // Salvando em um arquivo na unidade local. slTexto.SaveToFile('c:\temp\exemplo.txt'); // Salvando em um arquivo em uma unidade compartilhada. slTexto.SaveToFile('\\caixa4\pdv\exemplo.txt'); // Imprimindo diretamente na porta paralela local. slTexto.SaveToFile('LPT1'); // Imprimindo diretamente na porta serial local. slTexto.SaveToFile('COM2'); // Imprimindo em uma impressora compartilhada na rede. slTexto.SaveToFile('\\servidor\fx880.prn');
  18. Pessoalmente, prefiro não usar imagens no banco de dados... prefiro deixá-las em pastas... Para exibí-las, use um TImage ou até um webbrowser... Exemplos... Usuários: c:\sistema\acme\usuarios\user001.jpg c:\sistema\acme\usuarios\user002.jpg c:\sistema\acme\usuarios\user003.jpg c:\sistema\acme\usuarios\user004.jpg Produtos: c:\sistema\acme\plu\g002\7897474200035.jpg c:\sistema\acme\plu\g002\7897474200046.jpg c:\sistema\acme\plu\g003\7894465990031.jpg
  19. paulobergo

    Icone Na Bandeja

    Oi. Eu uso um componente (cool tray icon)... Faço com que o aplicativo que eu quiser funcione "minimizado" na "systray", podendo abrir o form (e também escondê-lo) quando quiser).... Se desejar, posso enviar o comp. por email...
×
×
  • Criar Novo...