Ir para conteúdo
Fórum Script Brasil

Jhonas

Monitores
  • Total de itens

    9.657
  • Registro em

Tudo que Jhonas postou

  1. O seu DBgrid deve estar ligado a um DataSource, ou seja, deve estar ligado a uma tabela ai para testar voce pode escolher um campo do dbgrid que seja tipo string DBGrid1.Columns[0].PickList.Append('JAN '); DBGrid1.Columns[0].PickList.Append('FEV '); DBGrid1.Columns[0].PickList.Append('MAR '); DBGrid1.Columns[0].PickList.Append('ABR '); DBGrid1.Columns[0].PickList.Append('MAI '); DBGrid1.Columns[0].PickList.Append('JUN '); DBGrid1.Columns[0].PickList.Append('JUL '); DBGrid1.Columns[0].PickList.Append('AGO '); DBGrid1.Columns[0].PickList.Append('SET '); DBGrid1.Columns[0].PickList.Append('OUT '); DBGrid1.Columns[0].PickList.Append('NOV '); DBGrid1.Columns[0].PickList.Append('DEZ '); OBS: Use este código no eventro OnActive do form .... quando voce especifica Columns[0] é a primeira coluna do dbgrid que ficará a lista do picklist ... ela aparece quando voce clicar no campo abraço
  2. DM.QLote.SQL.Text := 'UPDATE PBS_Desc SET Check = 0 where Check = 1'; O código esta correto ... tente assim DM.QLote.SQL.Append( 'UPDATE PBS_Desc SET Check = 0 where Check = 1'); abraço
  3. Colocar um ComboBox num DBGrid As colunas da DBGrid tem uma propriedade chamada PickList, que permite colocar as opções numa lista, que serão mostradas quando a coluna é editada. Para preenchê-la, basta abrir o editor de colunas da DBGrid, selecionar a coluna desejada, abrir o editor da PickList e colocar as opções para aquela coluna. Assim, ao editar a coluna, abre-se a combobox. exemplo: DBGrid1.Columns[0].PickList.Append('JAN '); DBGrid1.Columns[0].PickList.Append('FEV '); DBGrid1.Columns[0].PickList.Append('MAR '); DBGrid1.Columns[0].PickList.Append('ABR '); DBGrid1.Columns[0].PickList.Append('MAI '); DBGrid1.Columns[0].PickList.Append('JUN '); DBGrid1.Columns[0].PickList.Append('JUL '); DBGrid1.Columns[0].PickList.Append('AGO '); DBGrid1.Columns[0].PickList.Append('SET '); DBGrid1.Columns[0].PickList.Append('OUT '); DBGrid1.Columns[0].PickList.Append('NOV '); DBGrid1.Columns[0].PickList.Append('DEZ '); outro exemplo DBGrid1.Columns[1].PickList.Clear; CDS_Preg.First; for i := 0 to CDS_Preg.RecordCount-1 do begin DBGrid1.Columns[1].PickList.Append(CDS_PregCODNEG.Value); CDS_Preg.Next; end; abraço
  4. Coloquei um Edit pra mostrar qual adress tá sendo checado, e ele já começa checando um valor muito alto, não entendo. Como voce não postou o código que está utilizando para fazer a leitura dos endereços, procure entender a lógica e aplicar as modificações necessarias ao seu código Function HexToInt(const HexStr: string): longint; var iNdx: integer; cTmp: Char; begin result := 0; for iNdx := 1 to Length(HexStr) do begin cTmp := HexStr[iNdx]; case cTmp of '0'..'9': Result := 16 * Result + (Ord(cTmp) - $30); 'A'..'F': Result := 16 * Result + (Ord(cTmp) - $37); 'a'..'f': Result := 16 * Result + (Ord(cTmp) - $57); else raise EConvertError.Create('Illegal character in hex string'); end; end; end; procedure TForm1.Button1Click(Sender: TObject); var Max , Min : Int64; i, adress : integer; a: string; begin Max := HexToInt('11680980'); Min := HexToInt('00C9AEBA'); Gauge1.MaxValue := Max; Gauge1.MinValue := Min; if Max - Min <= 2147483647 then begin for i := min to max do begin if (Hextoint(inttostr(adress)) >= min) and (Hextoint(inttostr(adress)) <= max)then Gauge1.Progress:= i; end; Gauge1.Progress := 0; end else begin // Se a diferença estrapolou 2147483647 Max := Max div 16; Min := Min div 16; for i := min to max do begin Gauge1.Progress := i; end; Gauge1.Progress := 0; end; end; abraço
  5. exemplo: procedure TForm1.Button1Click(Sender: TObject); var i, t: cardinal; s : string; begin s := ''; t:=length(Edit1.Text); setlength(s,t); for i:=0 to t-1 do s[t-i]:=Edit1.Text[i+1]; edit1.text := s; end; abraço
  6. O Erro: Value must be between -2147483647 and 99. Valor deve estar entre -2147483647 e 99. realmente voce fez alguma coisa errada no código .... coloque um exemplo real dessa chegagem abraço
  7. Basta testar a variavel dRunning procedure CaptureConsoleOutput(const ACommand, AParameters: String; AMemo: TRichEdit); const CReadBuffer = 2400; var saSecurity: TSecurityAttributes; hRead: THandle; hWrite: THandle; suiStartup: TStartupInfo; piProcess: TProcessInformation; pBuffer: array[0..CReadBuffer] of Char; dRead: DWord; dRunning: DWord; begin saSecurity.nLength := SizeOf(TSecurityAttributes); saSecurity.bInheritHandle := True; saSecurity.lpSecurityDescriptor := nil; if CreatePipe(hRead, hWrite, @saSecurity, 0) then begin FillChar(suiStartup, SizeOf(TStartupInfo), #0); suiStartup.cb := SizeOf(TStartupInfo); suiStartup.hStdInput := hRead; suiStartup.hStdOutput := hWrite; suiStartup.hStdError := hWrite; suiStartup.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW; suiStartup.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(ACommand + ' ' + AParameters), @saSecurity, @saSecurity, True, NORMAL_PRIORITY_CLASS, nil, nil, suiStartup, piProcess) then begin repeat dRunning := WaitForSingleObject(piProcess.hProcess, 100); Application.ProcessMessages(); repeat dRead := 0; ReadFile(hRead, pBuffer[0], CReadBuffer, dRead, nil); pBuffer[dRead] := #0; AMemo.Lines.Add(String(pBuffer)); until (dRead < CReadBuffer); until (dRunning <> WAIT_TIMEOUT); CloseHandle(piProcess.hProcess); CloseHandle(piProcess.hThread); if (dRunning <> WAIT_TIMEOUT) and (dRunning = 0) then ShowMessage('Comando executado corretamente') else ShowMessage('Comando executado incorretamente') end; CloseHandle(hRead); CloseHandle(hWrite); end; end; OBS: Onde aparece a mensagem voce pode jogar valores 0 ou 1 para uma tabela e apresenta-los em um dbgrid abraço
  8. A idéia é simples ... coverta o Hexadecimal ( Max ) e o hexadecimal ( Min ) em int64 faça a diferença do Max menos o Min ... se o resultado estiver dentro do range do gauge voce usa se a diferença estiver fora, voce faz uma divisão sucessiva por algum numero até que o resultado fique dentro do range Só testando para saber o resultado abraço
  9. var min, max : Int64; begin // Set the minimum and maximum values of this data type min := Low(Int64); max := High(Int64); ShowMessage('Min int64 value = '+IntToStr(min)); ShowMessage('Max int64 value = '+IntToStr(max)); end; resultado: Min int64 value = -9223372036854775808 Max int64 value = 9223372036854775807 OBS: usando Int64 voce conseguiria abranger os valores em hexadecimal entretanto o gauge suporta de 1 a 2147483647 então dentro do exemplo que voce passou: procedure TForm1.Button1Click(Sender: TObject); var Max, Min : int64; i : integer; begin Max := 292030848; Min := 11680980; Gauge1.MaxValue := Max; Gauge1.MinValue := Min; for i := min to max do begin Gauge1.Progress := i; end end; Veja que os valores para Max e Min usando int64 poderiam chegar a Min int64 value = -9223372036854775808 Max int64 value = 9223372036854775807 entretanto o gauge chegaria apenas a 2147483647 Solução: a diferença de Max e Min deve estar dentro do range do gauge .. se extrapolar a idéia mais simples seria fazer uma divisão abraço
  10. experimente assim procedure Ordenar(Valores: tStrings); var i, j : integer; temp : string; begin for i := 0 to Valores.Count - 1 do for j := 0 to Valores.Count - 2 do begin if ansiUpperCase(Valores[j]) > ansiUpperCase(Valores[j + 1]) then begin TEmp := Valores[j]; Valores[j] := Valores[j + 1]; Valores[j + 1 ] := TEmp; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Ordenar(memo1.lines); end; abraço
  11. voce tem que usar o picklist http://www.devmedia.com.br/articles/post-1...id-Parte-I.html abraço
  12. Jhonas

    radiogroup.focused

    procedure TForm1.Edit1Exit(Sender: TObject); begin if RadioGroup1.Focused = false then showmessage('RadioGroup sem foco') else showmessage('RadioGroup com foco'); edit1.text := 'Teste'; end; Se ao sair do Evento OnExit do Edit o foco não cair em um componente RadioGroup1, a mensagem sempre será 'RadioGroup sem foco' abraço
  13. Testei o componente do link que voce indicou e esta funcionando normal no delphi 7 ... não tenho o delphi 2010 abraço
  14. Se for o driver.sys do windows é impossivel se voce não tiver o código fonte abraço
  15. Isso é uma condição de proteção do windows 7 para evitar que programas espiões não possam ser executados sem seu consentimento Voce terá que criar um exceção para que esse executavel seja executado, pelo firewall do windows abraço
  16. Os seus valores de Max e Min em Hexadecimal convertidos para decimal são positivos ou negativos ?
  17. Veja esse exemplo, vai te ajudar http://www.devmedia.com.br/post-2300-Utili...--internet.html Download do código http://www.devmedia.com.br/download/down.asp?id=2300&cb= abraço
  18. Sim... se o teste funcionar, voce pode implementar o resultado na thread. fechar ou minimizar ... se fechar o processamento é interrompido ... se minimizar não abraço
  19. Com poucas alterações no seu código, acho que vai funcionar OBS: Mantenha as configurações atuais para o idFTP e joque o conteudo do idPOP3 dentro do ListBox e faça o teste unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, Gauges; type TForm1 = class(TForm) IdFTP1: TIdFTP; Button1: TButton; ListBox1: TListBox; Gauge1: TGauge; procedure Button1Click(Sender: TObject); procedure IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); private { Private declarations } public { Public declarations } end; var Form1: TForm1; bytesToTransfer: integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var indice : integer; begin try if IdFTP1.Connected then IdFTP1.Disconnect; IdFTP1.Connect(); IdFTP1.List(ListBox1.Items,'*.pdf',false); // Listar somente arquivos com extensão .pdf if ListBox1.Items.Count = 0 then Abort; for indice:= 0 to ListBox1.Items.Count -1 do begin try ListBox1.Selected[indice] := true; bytesToTransfer := IdFTP1.Size(ListBox1.Items.Strings[indice]); IdFTP1.Get(ListBox1.Items.Strings[indice],'' + ListBox1.Items.Strings[indice],true); except on e:exception do showmessage(e.Message); end; end; finally IdFTP1.Disconnect; end; end; procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin Gauge1.Progress := 0; if AWorkCountMax > 0 then Gauge1.MaxValue := AWorkCountMax else Gauge1.MaxValue := bytesToTransfer; end; procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); begin Gauge1.Progress := AWorkCount; end; end. abraço
  20. Sim ... e caso o numero da versão não seja incrementado automaticamente, veja se não deixou alguma opção desmarcada abraço
  21. Experimente usar o MessageBox http://www.susviela.hpg.ig.com.br/delphi/d...i/mensagens.htm abraço
  22. eu marquei a opção Auto_increment build number, ele não deveria incrementar automatico pra mim??? somente quando houver mudanças significativas no código abraço
  23. Fiz um teste com janela modal e não modal e funciona normal... em ultimo caso, voce pode criar a sua propria janela de mensagem, onde voce pode determinar o foco abraço
  24. O fato de voce compilar umas 100 vezes, mesmo que tenha alterado apenas algumas linhas de comando, voce terá sempre o mesmo resultado se voce não alterar o Module Version Number ou usar a opção Auto_increment build number O controle de versão é seu ... voce é quem deve altera-lo sempre que necessario abraço
×
×
  • Criar Novo...