-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
Erro de compilação de projeto no Delphi 5
pergunta respondeu ao Reinaldo S. Pedroso de Jhonas em Delphi, Kylix
se voce tem o código fonte, então voce pode modifica-lo a vontade e corrigir esse problema abraço -
Erro de compilação de projeto no Delphi 5
pergunta respondeu ao Reinaldo S. Pedroso de Jhonas em Delphi, Kylix
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 -
(Resolvido) Codigo de Botões para formulários: salvar, delete, incluir
pergunta respondeu ao Adno Carvalho de Jhonas em Delphi, Kylix
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 -
Erro de compilação de projeto no Delphi 5
pergunta respondeu ao Reinaldo S. Pedroso de Jhonas em Delphi, Kylix
veja http://www.planetadelphi.com.br/dica/3398/...automaticamente http://scriptbrasil.com.br/forum/index.php?showtopic=60513 abraço -
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
-
Erro de compilação de projeto no Delphi 5
pergunta respondeu ao Reinaldo S. Pedroso de Jhonas em Delphi, Kylix
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 -
(Resolvido) Não foi possível localizar o ponto de entrada do procedime
pergunta respondeu ao MICHELI_MARTINS de Jhonas em Delphi, Kylix
minha ultima sugestão é voce fazer um update do microsoft libraries http://translate.google.com.br/translate?h...t.com/kb/197298 abraço -
(Resolvido) TMainMenu - Controle de acesso por usuario
pergunta respondeu ao pimpocvl007 de Jhonas em Delphi, Kylix
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 -
(Resolvido) Não foi possível localizar o ponto de entrada do procedime
pergunta respondeu ao MICHELI_MARTINS de Jhonas em Delphi, Kylix
então tente rodar o programa em modo de compatibilidade, clicando com o botão direito do mouse sobre o executavel abraço -
(Resolvido) Não foi possível localizar o ponto de entrada do procedime
pergunta respondeu ao MICHELI_MARTINS de Jhonas em Delphi, Kylix
como eu disse, o erro esta na msvcrt.dll http://pcsupport.about.com/od/findbyerrorm...ssing-error.htm abraço -
(Resolvido) Não foi possível localizar o ponto de entrada do procedime
pergunta respondeu ao MICHELI_MARTINS de Jhonas em Delphi, Kylix
solução do problema: http://www.instant-registry-fixes.org/how-...vcrtdll-errors/ abraço -
basta colocar o comando Close no botão. abraço
-
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
-
Erro de compilação de projeto no Delphi 5
pergunta respondeu ao Reinaldo S. Pedroso de Jhonas em Delphi, Kylix
então veja se ChecarCpfCgc não é um componente de terceiros abraço -
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
-
nesse caso, o if não deverá testar somente a diferença, mas o conteudo ( valor ) abraço
-
Erro de compilação de projeto no Delphi 5
pergunta respondeu ao Reinaldo S. Pedroso de Jhonas em Delphi, Kylix
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 -
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
-
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
-
(Resolvido) Borland Socket Server x Win7
pergunta respondeu ao Mario Henrique de Jhonas em Delphi, Kylix
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 -
o exemplo que te passei faz exatamente isso abraço
-
(Resolvido) Banco ACCESS não diminui com delete!
pergunta respondeu ao Gustavo_Sid de Jhonas em Delphi, Kylix
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 -
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
-
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
-
(Resolvido) TMainMenu - Controle de acesso por usuario
pergunta respondeu ao pimpocvl007 de Jhonas em Delphi, Kylix
é 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