Ir para conteúdo
Fórum Script Brasil

s3c

Membros
  • Total de itens

    817
  • Registro em

  • Última visita

Tudo que s3c postou

  1. s3c

    Pagecontrol

    Existe outra opção: Coloque no evento onChanging do PageControl: if PageControl1.ActivePage = TabSheet3 then AllowChange := false;Com isto você não consegue mudar de TabSheet.
  2. s3c

    Arquivo Txt

    Olá, teste este código abaixo: var f:TextFile; s:String; p:PChar; i:Integer; begin Edit2.Text := ''; Edit3.Text := ''; Memo1.Clear; AssignFile(f, 'c:\Temp\xxx.txt'); Reset(f); While not Eof(f) do begin Readln(f, s); p := PChar(s); if not SameText(Copy(p, 1, Pos('-', p)-1), Trim(Edit1.Text)) then Continue; Inc(p, Pos('-', p)); i := 1; While Pos('-', p) > 0 do begin Inc(i); Case i of 2 : Edit2.Text := Copy(p, 1, Pos('-', p)-1); 3 : Edit3.Text := Copy(p, 1, Pos('-', p)-1); else Memo1.Lines.Add(Copy(p, 1, Pos('-', p)-1)); end; Inc(p, Pos('-', p)); end; Memo1.Lines.Add(p); CloseFile(f); Exit; end; CloseFile(f); ShowMessage('Codigo não encontrado!'); Edit1.SetFocus end;
  3. s3c

    Arquivo Desconhecido

    Pelo Delphi você consegue utilizando File of Byte, AssignFile, Reset, FileSize e BlockRead.
  4. s3c

    Arquivo Txt

    Olá Progr'amador, Mas se tirar o Exit e no caso de encontrar, a leitura do arquivo continuará até o final desnecessariamente. Não seria melhor p/ otimização, tirar a variável Achou e colocar Closefile(ArqTxt) antes do Exit ? Se o Exit não for executado, é porque ele não achou e cairá na mensagem. Ou senão, deixar como está e trocar o Exit por um Break
  5. Faça um for somando o Length das linhas até ser >= à posição em caracterres. A linha será o índice desse for
  6. s3c

    Arquivo Txt

    Olá, esse código está pegando 3 campos, comparando o primeiro e se for igual ao Edit1, está colocando o segundo e terceiro nos Edit2 e Edit3. Há um pequeno erro na hora de dar o Exit, você não está fechando o arquivo; e a variável Achou não é necessária neste caso porque o próprio Exit já encerra a função. Bom, aonde você irá jogar os outros campos restantes(MEDICAMENTO1-MEDICAMENTO2-MEDICAMENTO3...) ?
  7. s3c

    Arquivo Txt

    você quer ler esse arquivo e fazer o que depois ?
  8. s3c

    Código

    Poste seu .dpr
  9. Acredito que seja até 9 dígitos, porque sou de São Paulo e o meu tem 8.
  10. Acho que essa condição nunca irá acontecer.
  11. s3c

    Copiar Registro

    Não entendí muito bem sua dúvida. Poderia dar um exemplo prático ?
  12. A unit DateUtils possui as funções: SecondsBetween e MinutesBetween.
  13. Esquecí de um detalhe: A primeira coluna é escrito o nome da fonte normalmente, se quiser escrevê-lo c/ a própria fonte é só implementar no último if. Não fiz isso porque tem fontes que não são legíveis e aí você não conseguirá decifrar seu nome.
  14. Olá Paulo, realmente quando se fala em Canvas, a maioria do pessoal não gosta. Eu também não gosto muito de mexer c/ o Canvas, mas tem horas que não tem jeito e já tive que trabalhar várias vezes com ele. Tente assim: // Aqui você acerta seu Grid procedure TForm1.FormCreate(Sender: TObject); var i:Integer; begin StringGrid1.Cells[0,0] := 'Fontes'; StringGrid1.Cells[1,0] := 'Texto Conf Fonte'; StringGrid1.ColWidths[0] := 150; StringGrid1.ColWidths[1] := 150; StringGrid1.RowCount := Screen.Fonts.Count+1; for i := 0 to Screen.Fonts.Count-1 do StringGrid1.Cells[0, i+1] := Screen.Fonts[i]; end; // Aqui você acerta as fontes // Ative o evento onDrawCell procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var iCentro:Integer; begin if (ARow = 0) and (ACol in [0,1]) then begin StringGrid1.Canvas.FillRect(Rect); iCentro := (StringGrid1.ColWidths[0] - StringGrid1.Canvas.TextWidth(StringGrid1.Cells[ACol,ARow])) div 2; StringGrid1.Canvas.TextOut(Rect.Left+iCentro, 3, StringGrid1.Cells[ACol,ARow]); end else if ACol = 1 then begin StringGrid1.Canvas.Font.Name := Screen.Fonts[ARow-1]; StringGrid1.Canvas.TextOut(Rect.Left+2, Rect.Top+3, 'Texto Qualquer'); end; end;
  15. s3c

    Fax Pelo Delphi

    Deve ser porque você deve entrar c/ login e senha. Tente ir em: http://codecentral.borland.com Depois clique em Code Central Catalog (quase no fim da página) Depois em Category Components/Delphi Se abrir, procure por "Fax".
  16. s3c

    Registro

    Olá Paulo, o valor da primeira coluna é o próprio SL
  17. s3c

    Fax Pelo Delphi

    Olá Progr'amador, não baixei e não testei, mas de onde vem parece ser confiável. http://codecentral.borland.com/codecentral...isting?id=22617
  18. É ± isso. No meu caso criei um formulário único c/ 4 funções: Informação, Alerta, Erro e Confirmação. Dependendo da função chamada, o ícone da janela muda, assim como os botões de resposta; e a função retorna qual botão foi clicado.
  19. você pode utilizar um StringGrid e no evento onDrawCell alterar a fonte da segunda coluna pelo StringGrid.Canvas
  20. Olá Paulo, já tive esse problema também e o jeito que encontrei foi o de criar um formulário de msgs e os programas utilizam essa Unit p/ enviar msgs.
  21. Olá colega ! Quando você faz: entrada := TEdit.Create(self); você diz que o dono do TEdit é a classe base da função ou método que está este comando. Com isto ela(Self) é a responsável pela destruição do TEdit. Aconselho você fazer: entrada := TEdit.Create(nil); Assim ninguém vai liberá-lo automaticamente; e para liberar: entrada.Free;
  22. s3c

    Boolean

    Olá Progr'amador, realmente colocando parênteses, ele responde true p/ b. Peguei esse erro num programa que estava sujando a variável booleana porque nunca utilizei parênteses p/ variáveis boolean em ifs simples; e realmente não precisa utilizar. Ainda acho que é um furo do compilador.
  23. s3c

    Boolean

    var a,b:Boolean; Baiti:Byte; begin a := true; Baiti := 2; Move(Baiti, b, 1); if a and b then ShowMessage('b é true') else if a and not b then ShowMessage('b é false') else if a then ShowMessage('b é ?'); // é aqui que ele vem end;
  24. Recursividade é uma função ou uma procedure que chama ela mesma. Por ex, você listou as pastas em primeiro nível certo ? Aí p/ cada pasta você executa a mesma função passando como parâmetro a pasta retornada. É como você clicar numa pasta dentro da outra até chegar ao final. Se você errar num código recursivo, geralmente dará um erro de Stack Overflow.
  25. Este é um exemplo simples que varre as pastas de C:\ e procura System.ini. Coloque dois TMemo no Form. var iRet:Integer; TS:TSearchRec; sVol,sDir,sArq:String; begin sVol := 'c:'; sDir := '\'; sArq := 'System.ini'; if FileExists(sVol+sDir+sArq) then Memo2.Lines.Add(sVol+sDir+sArq); iRet := FindFirst(sVol+sDir+'*.*', faDirectory+faReadOnly+faHidden, TS); While iRet = 0 do begin if (TS.Attr and faDirectory) > 0 then begin Memo1.Lines.Add(TS.Name); if FileExists(sVol+sDir+TS.Name+'\'+sArq) then Memo2.Lines.Add(sVol+sDir+TS.Name+'\'+sArq); end; iRet := FindNext(TS); end; FindClose(TS); end; Só p/ você ter uma idéia de como funciona. Para varrer as sub-pastas, você terá que implementar recursividade neste código.
×
×
  • Criar Novo...