Ir para conteúdo
Fórum Script Brasil

Jhonas

Monitores
  • Total de itens

    9.657
  • Registro em

Tudo que Jhonas postou

  1. se voce tem o código fonte, então voce pode modifica-lo a vontade e corrigir esse problema abraço
  2. se o usuario e senha estiverem cadastrados em uma tabela do banco de dados, é só procurar usando o Database Desktop ( esta no menu Tools do delphi ) se o usuario e senha estiverem no código do executavel, procure no form de login e senha para saber qual é abraço
  3. veja http://br.groups.yahoo.com/group/delphi-br/message/91109 e tambem http://www.google.com.br/search?hl=pt-BR&a...0l0l480l951l4-2 abraço
  4. veja http://www.planetadelphi.com.br/dica/3398/...automaticamente http://scriptbrasil.com.br/forum/index.php?showtopic=60513 abraço
  5. Já que quer um desafio ... qual é o primeiro código que o delphi executa, antes mesmo de criar qualquer formulário ? se souber, fica ai a minha sugestão. rs ======================================================= outra sugestão mais simples: Existe uma maneira de checar internamente se o usuário abriu o programa como administrador Crie uma Unit no delphi e salve com o nome de IsAdministrator.pas e salve na pasta Bin do delphi CODE unit IsAdministrator; interface function IsAdmin: Boolean; implementation uses Windows; const SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5)); SECURITY_BUILTIN_DOMAIN_RID = $00000020; DOMAIN_ALIAS_RID_ADMINS = $00000220; type TOpenThreadToken = function (ThreadHandle: THandle; DesiredAccess: DWORD; OpenAsSelf: BOOL; var TokenHandle: THandle): BOOL; stdcall; TGetTokenInformation = function (TokenHandle: THandle; TokenInformationClass: TTokenInformationClass; TokenInformation: Pointer; TokenInformationLength: DWORD; var ReturnLength: DWORD): BOOL; stdcall; TOpenProcessToken = function (ProcessHandle: THandle; DesiredAccess: DWORD; var TokenHandle: THandle): BOOL; stdcall; TEqualSid = function (pSid1, pSid2: Pointer): BOOL; stdcall; TAllocateAndInitializeSid = function (const pIdentifierAuthority: TSIDIdentifierAuthority; nSubAuthorityCount: Byte; nSubAuthority0, nSubAuthority1: DWORD; nSubAuthority2, nSubAuthority3, nSubAuthority4: DWORD; nSubAuthority5, nSubAuthority6, nSubAuthority7: DWORD; var pSid: Pointer): BOOL; stdcall; TFreeSid = function (pSid: Pointer): Pointer; stdcall; function IsAdmin: boolean; var iAccessToken: THandle; ptgGroups: PTokenGroups; dwInfoBufferSize: DWORD; psidAdministrators: PSID; iCount: integer; fSuccess: BOOL; pOpenThreadToken: TOpenThreadToken; pOpenProcessToken: TOpenProcessToken; pGetTokenInformation: TGetTokenInformation; pEqualSid: TEqualSid; pAllocateAndInitializeSid: TAllocateAndInitializeSid; pFreeSid: TFreeSid; iDll: integer; begin Result := false; iDll := LoadLibrary(advapi32); if iDll = 0 then exit; try pOpenThreadToken := GetProcAddress(iDll, 'OpenThreadToken'); pOpenProcessToken := GetProcAddress(iDll, 'OpenProcessToken'); pGetTokenInformation := GetProcAddress(iDll, 'GetTokenInformation'); pEqualSid := GetProcAddress(iDll, 'EqualSid'); pAllocateAndInitializeSid := GetProcAddress(iDll, 'AllocateAndInitializeSid'); pFreeSid := GetProcAddress(iDll, 'FreeSid'); if not Assigned(pOpenThreadToken) or not Assigned(pOpenProcessToken) or not Assigned(pGetTokenInformation) or not Assigned(pEqualSid) or not Assigned(pFreeSid) or not Assigned(pAllocateAndInitializeSid) then exit; fSuccess := pOpenThreadToken(GetCurrentThread, TOKEN_QUERY, true, iAccessToken); if not fSuccess then begin if GetLastError = ERROR_NO_TOKEN then fSuccess := pOpenProcessToken(GetCurrentProcess, TOKEN_QUERY, iAccessToken); end; if fSuccess then begin GetMem(ptgGroups, 1024); try fSuccess := pGetTokenInformation(iAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize); CloseHandle(iAccessToken); if fSuccess then begin pAllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, psidAdministrators); try for iCount := 0 to ptgGroups.GroupCount - 1 do if pEqualSid(psidAdministrators, ptgGroups.Groups[iCount].Sid) then begin Result := true; break; end; finally pFreeSid(psidAdministrators); end; end; finally FreeMem(ptgGroups); end; end; finally FreeLibrary(iDll); end; end; end. Depois é só chamar a função CODE Uses IsAdministrator; procedure TForm1.Button1Click(Sender: TObject); begin if IsAdmin = true then showmessage('O usuário logou como Administrador') else showmessage('O usuário logou como Não Administrador') end; depois é só usar o comando Runas do windows pelo delphi, para executar o programa como administrador http://www.microsoft.com/resources/documen...s.mspx?mfr=true OBS: Funciona para o XP, para o Vista e Win7 tem que fazer algumas modificações abraço
  6. message 'unknown database. Alias: EleitoralMelhor302' base de dados não encontrada ... Alias: EleitoralMelhor302 provavelmente o seu programa utiliza o BDE e não foi encontrado esse Alias no Administrator do BDE que faz a referencia ao banco de dados abraço
  7. minha ultima sugestão é voce fazer um update do microsoft libraries http://translate.google.com.br/translate?h...t.com/kb/197298 abraço
  8. Amigo, voce precisa ter o habito de ler o help do delphi veja o seu comando: menuPrincipal.Items[0].Items[0].Find(nomecomponente).Enabled := False; apesar de não ocorrer erro na compilação, haveria erro na execução a propriedade Items ... sozinho é um TMenuItem que descreve o elemento do Menu, ou seja o seu nome. a propriedade Items[index] é o indice ( numero ) relativo a posição desse elemento na lista do Menu o seu comando acima não é correto, porque no indice [0] já existe um elemento do Menu declarado, e o metodo find serve para localizar um item de Menu na ordem de propriedade pelo nome ou cabeçalho. então voce tem que optar por um ou outro método ... se voce quer usar strings terá que fazer varios IFIs caso contrário poderá usar os indices, que é muito mais prático exemplo: procedure TForm1.Button1Click(Sender: TObject); var i,j, userlevel : integer; NomeItemMenu : string; begin userlevel := -1; NomeItemMenu := 'aaa'; if UserLevel < (MainMenu1.Items.Find(NomeItemMenu).Tag) then MainMenu1.Items.Find(NomeItemMenu).Enabled := False else MainMenu1.Items.Find(NomeItemMenu).Enabled:= True; end; abraço
  9. então tente rodar o programa em modo de compatibilidade, clicando com o botão direito do mouse sobre o executavel abraço
  10. como eu disse, o erro esta na msvcrt.dll http://pcsupport.about.com/od/findbyerrorm...ssing-error.htm abraço
  11. solução do problema: http://www.instant-registry-fixes.org/how-...vcrtdll-errors/ abraço
  12. Jhonas

    Fechar Modal

    basta colocar o comando Close no botão. abraço
  13. Jhonas

    Fechar Modal

    procedure TForm1.FormShow(Sender: TObject); begin with TForm2.Create(Application) do /// Criar o Form2 begin try ShowModal; /// Mostrar o Form2 finally; free; end; end; end; Como voce quer fecha-lo se o comando é para mostra-lo abraço
  14. então veja se ChecarCpfCgc não é um componente de terceiros abraço
  15. sugestão: mude toda a lógica... não use mais o evento OnDrawCell e faça tudo o que precisa em um botão abraço
  16. nesse caso, o if não deverá testar somente a diferença, mas o conteudo ( valor ) abraço
  17. Failed to get data for ChecarCpfCgc esse erro é de chamada a função ou procedure, mas se acontece quando voce compila no delphi5, pode ser erro de versão... provavelmente esse programa foi compilado em outra versão do delphi abraço
  18. Parte da resposta: procedure TForm1.Button1Click(Sender: TObject); var Temp, Platform , Version : String; osInfo : TOSVersionInfo; begin osInfo.dwOSVersionInfoSize:=SizeOf(osInfo); GetVersionEx(osInfo); Version :=IntToStr(osInfo.dwMinorVersion); Temp:=IntToStr(osInfo.dwBuildNumber and $0ffff); Temp:=String(osInfo.szCSDVersion); if (Length(Temp) > 0) then if (Temp[1] <> ' ') then Temp:=' ' + Temp; Version:= Version + Temp; label2.caption := Version; case osInfo.dwPlatformId of VER_PLATFORM_WIN32s : Platform:='Win32s'; VER_PLATFORM_WIN32_WINDOWS : begin if (osInfo.dwMinorVersion = 0) then Platform:='Windows 95' else if (osInfo.dwMinorVersion = 10) then Platform:='Windows 98' else Platform:='Windows Me'; end; VER_PLATFORM_WIN32_NT : case osInfo.dwMajorVersion of 3 : Platform:='Windows NT 3'; 4 : Platform:='Windows NT 4.0'; 5 : case osInfo.dwMinorVersion of 0: Platform:='Windows 2000, Windows Vista ou Windows Server 2008'; 1: Platform:='Windows XP'; 2: Platform:='Windows Server 2003 R2, 2003 ou XP Professional X64 Edition'; else Platform:='Windows Version +'; end; end; end; label1.caption := Platform; end; OBS: com as informações que te passei voce consegue complementar o código abraço
  19. vou tentar explicar... a procedure DrawCellText que esta no evento OnDrawCell do StringGrid2 é para copiar o Texto quando a celula for pintada a procedure DrawCellColor( CorFundo, CorLetra : TColor ) ... perçeba que recebe 2 parametros CorFundo -> a cor que eu quero que a celula seja pintada CorLetra -> a cor que eu quero que fique o Texto] O evento OnDrawCell do StringGrid2 funciona como se fosse um Loop infinito, então o código abaixo: If (StringGrid1.Cells[ACol,Arow]<>StringGrid2.Cells[ACol,Arow]) then DrawCellColor( clYellow, clBlack ); fica testando os valores de cada celula, se o valor das celulas forem iguais, fica branco e se forem de valores diferentes ficam amarelas ================================================ o código do botão serve apenas para carregar os valores nas respectivas celulas dos StringGrids ... StringGrid1.Cells[1,1] := '1'; StringGrid1.Cells[2,1] := '2'; StringGrid1.Cells[3,1] := '3'; StringGrid1.Cells[4,1] := '4'; StringGrid2.Cells[1,1] := '1'; StringGrid2.Cells[2,1] := '3'; StringGrid2.Cells[3,1] := '3'; StringGrid2.Cells[4,1] := '5'; entretanto para evitar de ficar clicando com o mouse sobre esses valores para que ele verifique o conteudo das celulas, o codigo abaixo: for i := 1 to StringGrid1.RowCount -1 do for j := 1 to StringGrid1.ColCount -1 do begin Meufoco.Left:=j; // coluna inicial Meufoco.Right:=j; // coluna final Meufoco.Top:=i; // linha inicial Meufoco.Bottom:=i; // linha final stringGrid1.Selection:=Meufoco; stringGrid1.Refresh; stringGrid2.Refresh; StringGrid2.SetFocus; end; faz o serviço automaticamente ... entendeu ? abraço
  20. Endereço já em uso. Normalmente, apenas uma utilização de cada endereço Soquete (protocolo/endereço IP/porta) é permitido. Esse erro ocorre se um aplicativo tenta uma Soquete para um endereço IP BIND/porta que já foi usada para um Soquete existente, ou um Soquete que não estava fechado corretamente, ou um que esteja ainda no processo de fechamento. Para aplicativos servidor que precisem múltiplos soquetes BIND para o mesmo número porta, considere o uso setsockopt (Soquetes do Windows)(SO_REUSEADDR). Aplicativos cliente geralmente não precisam chamar todo BIND — conectar escolhe uma PORTA não usada automaticamente. Quando BIND for chamado com um endereço curinga (envolvendo ADDR_ANY), um erro WSAEADDRINUSE pode ser gerado até que o endereço específico seja confirmado. Isso pode acontecer com uma chamada para outra função posteriormente, inclusive conectar, escutar, WSAConnect, ou WSAJoinLeaf. OBS: Faça uma pesquisa no forum por sockets http://scriptbrasil.com.br/forum/index.php...ighlite=sockets abraço
  21. o exemplo que te passei faz exatamente isso abraço
  22. Este tópico vai mostrar como compactar o banco de dados criado no Access para eliminar todo seu espaço excedente, reduzindo assim, o tamanho do arquivo de banco de dados. Procedimentos a serem executados: Acrescente um Panel invisível (Visible = False) na tela FrmMenuPrin. Na Unit da tela FrmMenuPrin, acrescente a unit ComObj na sua cláusula Uses e crie a procedure abaixo: Crie uma opção no menu principal: Ferramentas -> Compactar para chamar a procedure Compactar: Lembre-se usar a ActionList1 (ActComp) e digite os seguintes comandos no Evento OnExecute da ação ActComp: If MessageDlg('Antes de confirmar esta operação, feche o banco de dados.' + #13 + #13 + 'Deseja efetuar a compatação do Banco de Dados?', mtConfirmation, [mbYes, mbNo],0) = mrNo then Abort; Compactar; Procedure TFrmMenuPrin.Compactar; var dao: OLEVariant; begin Panel1.Visible := True; Dm.Conexao.Connected := False; Try Panel1.Caption:='Compactando Tabela'; Panel1.Repaint; dao := CreateOleObject('DAO.DBEngine.36'); dao.CompactDatabase(ExtractFileDir (Application.ExeName)+'\Banco.mdb', ExtractFileDir(Application.ExeName)+'\Banco2.mdb','',0,''); Panel1.Caption:='Apagando Arquivo Temporário'; Panel1.Repaint; If FileExists(ExtractFileDir (Application.ExeName)+'\Banco2.mdb') then DeleteFile(ExtractFileDir (Application.ExeName)+'\Banco.mdb'); Panel1.Caption:='Renomeando Arquivo'; Panel1.Repaint; if FileExists(ExtractFileDir (Application.ExeName)+'\Banco2.mdb') then RenameFile(ExtractFileDir(Application.ExeName)+'\Banco2.mdb', ExtractFileDir (Application.ExeName)+'\Banco.mdb'); Panel1.Caption:='Arquivo Banco.mdb Compactado'; Panel1.Repaint; Except panel1.caption:='Ocorreu um Erro durante a compactação'; end; Dm.Conexao.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ ExtractFilePath(Application.ExeName)+ 'Banco.mdb;Persist Security Info=False;'; Dm.Conexao.Connected := True; Panel1.Visible := False; end; abraço
  23. essas informações tambem vão ajudar { "win7", "Windows 7", 6, 1, 0x1DB1,VER_PLATFORM_WIN32_NT, "Service Pack 1", 1, 0, "WinNT"} { "win2008", "Windows 2008", 6, 0, 0x1771,VER_PLATFORM_WIN32_NT, "Service Pack 1", 0, 0, "ServerNT"} { "vista", "Windows Vista", 6, 0, 0x1772,VER_PLATFORM_WIN32_NT, "Service Pack 2", 2, 0, "WinNT"} { "win2003", "Windows 2003", 5, 2, 0xECE, VER_PLATFORM_WIN32_NT, "Service Pack 2", 2, 0, "ServerNT"} { "winxp", "Windows XP", 5, 1, 0xA28, VER_PLATFORM_WIN32_NT, "Service Pack 3", 3, 0, "WinNT"} { "win2k", "Windows 2000", 5, 0, 0x893, VER_PLATFORM_WIN32_NT, "Service Pack 4", 4, 0, "WinNT"} { "winme", "Windows ME", 4, 90, 0xBB8, VER_PLATFORM_WIN32_WINDOWS, " ", 0, 0, ""} { "win98", "Windows 98", 4, 10, 0x8AE, VER_PLATFORM_WIN32_WINDOWS, " A ", 0, 0, ""} { "win95", "Windows 95", 4, 0, 0x3B6, VER_PLATFORM_WIN32_WINDOWS, "", 0, 0, ""} { "nt40", "Windows NT 4.0", 4, 0, 0x565, VER_PLATFORM_WIN32_NT, "Service Pack 6a", 6, 0, "WinNT"} { "nt351", "Windows NT 3.5", 3, 51, 0x421, VER_PLATFORM_WIN32_NT, "Service Pack 2", 0, 0, "WinNT"} { "win31", "Windows 3.1", 2, 10, 0, VER_PLATFORM_WIN32s, "Win32s 1.3", 0, 0, ""} { "win30", "Windows 3.0", 3, 0, 0, VER_PLATFORM_WIN32s, "Win32s 1.3", 0, 0, ""} { "win20", "Windows 2.0", 2, 0, 0, VER_PLATFORM_WIN32s, "Win32s 1.3", 0, 0, ""} { "win2008r2", "Windows 2008 R2", 6, 1, 0x1DB1,VER_PLATFORM_WIN32_NT, "Service Pack 1", 1, 0, "ServerNT"} { "win7", "Windows 7", 6, 1, 0x1DB1,VER_PLATFORM_WIN32_NT, "Service Pack 1", 1, 0, "WinNT"} { "win2008", "Windows 2008", 6, 0, 0x1771,VER_PLATFORM_WIN32_NT, "Service Pack 1", 0, 0, "ServerNT"} { "vista", "Windows Vista", 6, 0, 0x1772,VER_PLATFORM_WIN32_NT, "Service Pack 2", 2, 0, "WinNT"} { "win2003", "Windows 2003", 5, 2, 0xECE, VER_PLATFORM_WIN32_NT, "Service Pack 2", 2, 0, "ServerNT"} { "winxp", "Windows XP", 5, 1, 0xA28, VER_PLATFORM_WIN32_NT, "Service Pack 3", 3, 0, "WinNT"} { "win2k", "Windows 2000", 5, 0, 0x893, VER_PLATFORM_WIN32_NT, "Service Pack 4", 4, 0, "WinNT"} { "winme", "Windows ME", 4, 90, 0xBB8, VER_PLATFORM_WIN32_WINDOWS, " ", 0, 0, ""} { "win98", "Windows 98", 4, 10, 0x8AE, VER_PLATFORM_WIN32_WINDOWS, " A ", 0, 0, ""} { "win95", "Windows 95", 4, 0, 0x3B6, VER_PLATFORM_WIN32_WINDOWS, "", 0, 0, ""} { "nt40", "Windows NT 4.0", 4, 0, 0x565, VER_PLATFORM_WIN32_NT, "Service Pack 6a", 6, 0, "WinNT"} { "nt351", "Windows NT 3.5", 3, 51, 0x421, VER_PLATFORM_WIN32_NT, "Service Pack 2", 0, 0, "WinNT"} { "win31", "Windows 3.1", 2, 10, 0, VER_PLATFORM_WIN32s, "Win32s 1.3", 0, 0, ""} { "win30", "Windows 3.0", 3, 0, 0, VER_PLATFORM_WIN32s, "Win32s 1.3", 0, 0, ""} { "win20", "Windows 2.0", 2, 0, 0, VER_PLATFORM_WIN32s, "Win32s 1.3", 0, 0, ""} abraço
  24. altere esse comando If (StringGrid1.Cells[ACol,Arow]<>StringGrid2.Cells[ACol,Arow]) then DrawCellColor( clYellow, clBlack ); azul claro If (StringGrid1.Cells[ACol,Arow]<>StringGrid2.Cells[ACol,Arow]) then DrawCellColor( clAqua, clBlack ); vermelho If (StringGrid1.Cells[ACol,Arow]<>StringGrid2.Cells[ACol,Arow]) then DrawCellColor( clRed, clBlack ); se não for isso, expique melhor abraço
  25. é possivel sim ... exemplo: if UserLevel < (MainMenu1.Items.Find('NomeItemMenu').Tag) then MainMenu1.Items.Find('NomeItemMenu').Enabled := False else MainMenu1.Items.Find('NomeItemMenu').Enabled:= True; abraço
×
×
  • Criar Novo...