Ir para conteúdo
Fórum Script Brasil

s3c

Membros
  • Total de itens

    817
  • Registro em

  • Última visita

Tudo que s3c postou

  1. Tente utilizar WndProc: procedure WndProc(var Msg:TMessage); override; procedure TForm1.WndProc(var Msg:TMessage); begin if RE1 <> nil then begin Label1.Caption := IntToStr(RichEdit1.CaretPos.Y+1) + ':' + IntToStr(RichEdit1.CaretPos.X+1); Label1.Refresh; end; inherited; end; Oops, RE1 = RichEdit1
  2. Tente colocar no evento onShow do Form que não aparece: SetWindowPos(Handle, Hwnd_TopMost, 0, 0, 0, 0, Swp_NoMove+Swp_NoSize);
  3. No caso de strings longas para aplicações Delphi, ShareMem resolve o problema. Mas se um outro aplicativo escrito em C++ por exemplo acessar a dll, é aconselhável utilizar PChar para o tipo String.
  4. s3c

    Dicas Do Micheus

    Pelo que entendí desse código, é uma validação de login/senha. Basta somente um TQuery para acessar o banco: Query.Close; Query.SQL.Text := 'Select Login, Senha, Tipo From Tabela_Acesso Where Login = :P0 and Senha = :P1'; Query.ParamByName('P0').asString := Edit_Login.Text; Query.ParamByName('P1').asString := Edit_Senha.Text; Query.Open; if Query.Eof then begin // Login e/ou senha inválido Query.Close; Exit; end; if SameText(Query.FieldByName('Tipo').asString, 'Administrador') then // Administrador else // Não Administrador Query.Close; PS: Seria bom guardar as informações no Banco criptografadas.
  5. Coloque no evento onClose do Form principal: Action := caNone;
  6. s3c

    Bloqueio De Registro

    É sempre bom adquirir conhecimento, mas as vezes os conhecimentos teóricos não andam muito bem na prática e a solução dada foi o que realmente ocorre em ambientes de rede. Como disse, já participei de várias discussões sobre lock de registros e a grande maioria optou pela solução dada. Para um sistema pequeno, onde o Banco de Dados não possui uma grande quantidade de tabelas, as chances de ocorrerem deadlocks são ainda maiores; pois muito facilmente dois terminais acessarão o mesmo cursor de dados com Update/Lock.
  7. s3c

    Bloqueio De Registro

    Para ser sincero, num ambiente de rede, a opção Update/Lock pode ser uma catástrofe. Imagine que um terminal dê o Update/Lock e depois a pessoa saia por uma hora sem dar o Commit. Isso sem falar em dois terminais darem o Update/Lock num mesmo cursor de dados e provocar um deadlock(que é muito comum nesse tipo de travamento de registros). Já ví diversas discussões sobre esse assunto e na minha opinião, prefiro liberar os registros para todos e na hora de atualizar, somente o primeiro atualiza, forçando os outros a voltar a ler o registro já atualizado.
  8. s3c

    Bloqueio De Registro

    Colega, também passei por isso e a única solução que encontrei foi uma dica de uma empresa de software que visitava: 1-Crie um campo Lock (inteiro) na tabela que você quiser fazer o lock. 2-Quando você acessar o registro, leia o Lock. 3-Na hora de atualizar, some 1 e regrave o Lock com a cláusula Where Lock = Lock_Lido. 4-Veja se a propriedade RowsAffected da Query retorna 0; se retornar é porque outro terminal atualizou o mesmo registro. Com isto, o lock se dá na hora da atualização e não na leitura.
  9. Coloque um TMemo no Form: // uses PSApi; var rId:array[0..999] of DWord; i,NumProc,NumMod:DWord; HProc,HMod:THandle; sNome:String; begin SetLength(sNome, 256); EnumProcesses(@rId[0], 4000, NumProc); for i := 0 to NumProc div 4 do begin HProc := OpenProcess(Process_Query_Information or Process_VM_Read, false, rId[i]); if HProc = 0 then Continue; EnumProcessModules(HProc, @HMod, 4, NumMod); GetModuleBaseName(HProc, HMod, @sNome[1], 256); Memo1.Lines.Add('PID=' + IntToStr(rId[i]) + ' ' + sNome); CloseHandle(HProc); end; end;
  10. Tente utilizar: Select Nome From Tabela Where Upper(Nome) Like 'JOSE%'Upper para evitar case sensitive. JOSE% - Inicia com Jose %JOSE% - Contem Jose %JOSE - Termina com Jose
  11. s3c

    Shfileoperation

    O parâmetro pFrom de SHFileOperation é um array de strings, então deve ser inserido um #0 adicional dizendo que não há mais strings; pTo também segue o mesmo. Então dependendo do momento da chamada de SHFileOperation, se o próximo byte ao final da string de pFrom for um #0 ele funciona, senão não funciona. Tente: pFrom := PChar('Diretório do programa\Dados\*.*' + #0); pTo := PChar('Diretório do programa\Backup\' + #0);
  12. Existe uma dica aqui no fórum por um ex moderador na página 1 da seção de dicas, onde você pode criar um projeto pelo Delphi para instalar o BDE.
  13. s3c

    Ativar Mdichild

    Pelo que sei, MDIChilds só podem ser criados quando tiver um MDIForm e este tem que ser o principal; ou seja; o MainForm de TApplication. Como seu MainForm é um Form normal, acho que você não conseguirá criar os MDIChilds e a mensagem que deve estar dando é que não há MDI Forms ativos; ou seja; seu Form principal não é um MDI.
  14. Tente utilizar um flag; antes do Canvas veja quais barras estão visíveis pelo GetScrollBarInfo e depois aplique ShowScrollBar conforme os flags.
  15. você está com 3 intruções ShowScrollBar; retire a primeira e deixe somente as duas do if.
  16. Veja se a propriedade RequestLive está ativada.
  17. Tente assim: var SBI:tagSCROLLBARINFO; begin . . . // Operações do Canvas SBI.cbSize := SizeOf(SBI); GetScrollBarInfo(DBGrid1.Handle, Integer(ObjId_HScroll), SBI); if (SBI.rgstate[0] and $8000) = 0 then ShowScrollBar(DBGridInf.Handle, SB_Horz, true); GetScrollBarInfo(DBGrid1.Handle, Integer(ObjId_VScroll), SBI); if (SBI.rgstate[0] and $8000) = 0 then ShowScrollBar(DBGridInf.Handle, SB_Vert, true); end;
  18. Mas um Select Distinct com Group By, torna o dataset Read-Only porque o resultado será agrupado e ele não sabe qual registro do Banco terá que atualizar.
  19. Mas aí não está o código do GetScrollBarInfo.
  20. var SBI:tagSCROLLBARINFO; begin SBI.cbSize := SizeOf(SBI); GetScrollBarInfo(DBGrid1.Handle, Integer(ObjId_HScroll), SBI); if (SBI.rgstate[0] and $8000) = 0 then // Barra horizontal visível GetScrollBarInfo(DBGrid1.Handle, Integer(ObjId_VScroll), SBI); if (SBI.rgstate[0] and $8000) = 0 then // Barra vertical visível end;
  21. você pode utilizar a função: GetScrollBarInfo para ver quais barras estão visíveis antes de dar ShowScrollBar
  22. Deve ser porque as Scrollbars são controladas pelo Windows e ele só redesenha quando um evento de paint é gerado; como você está pintando pelo Canvas, o Windows não sabe que elas foram mexidas.
  23. Tente mandar o Windows mostrar: ShowScrollBar(DBGridInf.Handle, SB_Both, true);
  24. s3c

    Propriedade Tag

    Neste caso o ponteiro inicial deve ser mantido e utilizado um indexador auxiliar.
  25. Ao invés de "MAX_QTD_DEF", tente colocar: as MAX_QTD_DEF
×
×
  • Criar Novo...