Como deixar o quot;*quot; Para WinXP e as versões anterior
Pessoal, fiz um programa q o campo senha é exibido com ´*´ (asterisco), só q no winxp é um tipo de ´*´ (font: windings letra ´l´) e nas versões anteriores do winxp é outro...
gostaria de fazer com que esse programa quando execultado em winxp aparecesse o ´*´ do winxp e quando execultado nas versões anteriores do winxp aparecesse o ´*´ normal
Como fazer issu???
gostaria de fazer com que esse programa quando execultado em winxp aparecesse o ´*´ do winxp e quando execultado nas versões anteriores do winxp aparecesse o ´*´ normal
Como fazer issu???
Duolon
Curtidas 0
Respostas
Duolon
09/08/2005
Ninguem???
GOSTEI 0
Sistemald
09/08/2005
Deve ter outra forma de fazer com que o ´*´ do Windows XP fique correto, sem qeu sejá necessário trocar a font
GOSTEI 0
Rjun
09/08/2005
Dê uma olhada nesse tópico:
http://forum.clubedelphi.net/viewtopic.php?t=60337
Sabendo qual a versão do windows, você configura seu edit para mostar o ´*´ ou o caractere do XP.
http://forum.clubedelphi.net/viewtopic.php?t=60337
Sabendo qual a versão do windows, você configura seu edit para mostar o ´*´ ou o caractere do XP.
GOSTEI 0
Duolon
09/08/2005
Dê uma olhada nesse tópico:
http://forum.clubedelphi.net/viewtopic.php?t=60337
Sabendo qual a versão do windows, você configura seu edit para mostar o ´*´ ou o caractere do XP.
Valew cara:
tipo eu ñ manjo quase nada de delphi como q fica esse código aparecendo os ´*´ nos respectivo windows? para meu caso axo q isso tem ser simplificado, pq são somente 2 tipos de ´*´, oq muda é o do windowsXP, o ´*´ dos outros windows são iguais...
const
{ operating system (OS)constants }
cOsUnknown = -1;
cOsWin95 = 0;
cOsWin98 = 1;
cOsWin98SE = 2;
cOsWinME = 3;
cOsWinNT = 4;
cOsWin2000 = 5;
cOsXP = 6;
function GetOperatingSystem: Integer;
var
osVerInfo: TOSVersionInfo;
majorVer, minorVer: Integer;
begin
Result := cOsUnknown;
{ set operating system type flag }
osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(osVerInfo) then
begin
majorVer := osVerInfo.dwMajorVersion;
minorVer := osVerInfo.dwMinorVersion;
case osVerInfo.dwPlatformId of
VER_PLATFORM_WIN32_NT: { Windows NT/2000 }
begin
if majorVer <= 4 then
Result := cOsWinNT
else if (majorVer = 5) and (minorVer = 0) then
Result := cOsWin2000
else if (majorVer = 5) and (minorVer = 1) then
Result := cOsXP
else
Result := cOsUnknown;
end;
VER_PLATFORM_WIN32_WINDOWS: { Windows 9x/ME }
begin
if (majorVer = 4) and (minorVer = 0) then
Result := cOsWin95
else if (majorVer = 4) and (minorVer = 10) then
begin
if osVerInfo.szCSDVersion[1] = ´A´ then
Result := cOsWin98SE
else
Result := cOsWin98;
end
else if (majorVer = 4) and (minorVer = 90) then
Result := cOsWinME
else
Result := cOsUnknown;
end;
else
Result := cOsUnknown;
end;
end
else
Result := cOsUnknown;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(GetOperatingSystem));
end;
{************************************************}
{ Some useful functions }
{************************************************}
function IsXP: Boolean;
var
OS: TOSVERSIONINFO;
begin
OS.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFO);
GetVersionEx(osv);
Result := (OS.dwPlatformId = VER_PLATFORM_WIN32_NT) and
(OS.dwMajorVersion = 5) and (OS.dwMinorVersion = 1);
end;
function IsWin2000: Boolean;
var
OS: TOSVersionInfo;
begin
ZeroMemory(@OS, SizeOf(OS));
OS.dwOSVersionInfoSize := SizeOf(OS);
GetVersionEx(OS);
Result := (OS.dwMajorVersion >= 5) and
(OS.dwPlatformId = VER_PLATFORM_WIN32_NT);
end;
function IsWinNT2: Boolean;
var
OS: TOSVersionInfo;
begin
ZeroMemory(@OS, SizeOf(OS));
OS.dwOSVersionInfoSize := SizeOf(OS);
GetVersionEx(OS);
Result := OS.dwPlatformId = VER_PLATFORM_WIN32_NT;
end;
{ or: }
function IsWinNT2: Boolean;
begin
Result := Win32Platform = VER_PLATFORM_WIN32_NT;
end;
function IsWinME: Boolean;
var
OS: TOSVersionInfo;
begin
ZeroMemory(@OS, SizeOf(OS));
OS.dwOSVersionInfoSize := SizeOf(OS);
GetVersionEx(OS);
Result := (OS.dwMajorVersion = 4) and (OS.dwMinorVersion = 90) and
(OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS);
end;
function IsWin95: Boolean;
var
OS: TOSVersionInfo;
begin
ZeroMemory(@OS, SizeOf(OS));
OS.dwOSVersionInfoSize := SizeOf(OS);
GetVersionEx(OS);
Result := (OS.dwMajorVersion >= 4) and (OS.dwMinorVersion = 0) and
(OS.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS);
end;
{************************************************}
{ Function to detect OS Version by Nico Bendlin }
{************************************************}
{$IFDEF CONDITIONALEXPRESSIONS}
{$IF Defined(TOSVersionInfoEx)}
{$DEFINE TOSVERSIONINFOEX_DEFINED}
{$IFEND}
{$ENDIF}
{$IFNDEF TOSVERSIONINFOEX_DEFINED}
type
POSVersionInfoEx = ^TOSVersionInfoEx;
TOSVersionInfoEx = packed record
dwOSVersionInfoSize: DWORD;
dwMajorVersion : DWORD;
dwMinorVersion : DWORD;
dwBuildNumber : DWORD;
dwPlatformId : DWORD;
szCSDVersion : array [0..127] of AnsiChar;
wServicePackMajor : Word;
wServicePackMinor : Word;
wSuiteMask : Word;
wProductType : Byte;
wReserved : Byte;
end;
const
VER_SERVER_NT = $80000000;
{$EXTERNALSYM VER_SERVER_NT}
VER_WORKSTATION_NT = $40000000;
{$EXTERNALSYM VER_WORKSTATION_NT}
VER_SUITE_SMALLBUSINESS = $00000001;
{$EXTERNALSYM VER_SUITE_SMALLBUSINESS}
VER_SUITE_ENTERPRISE = $00000002;
{$EXTERNALSYM VER_SUITE_ENTERPRISE}
VER_SUITE_BACKOFFICE = $00000004;
{$EXTERNALSYM VER_SUITE_BACKOFFICE}
VER_SUITE_COMMUNICATIONS = $00000008;
{$EXTERNALSYM VER_SUITE_COMMUNICATIONS}
VER_SUITE_TERMINAL = $00000010;
{$EXTERNALSYM VER_SUITE_TERMINAL}
VER_SUITE_SMALLBUSINESS_RESTRICTED = $00000020;
{$EXTERNALSYM VER_SUITE_SMALLBUSINESS_RESTRICTED}
VER_SUITE_EMBEDDEDNT = $00000040;
{$EXTERNALSYM VER_SUITE_EMBEDDEDNT}
VER_SUITE_DATACENTER = $00000080;
{$EXTERNALSYM VER_SUITE_DATACENTER}
VER_SUITE_SINGLEUSERTS = $00000100;
{$EXTERNALSYM VER_SUITE_SINGLEUSERTS}
VER_SUITE_PERSONAL = $00000200;
{$EXTERNALSYM VER_SUITE_PERSONAL}
VER_SUITE_BLADE = $00000400;
{$EXTERNALSYM VER_SUITE_BLADE}
VER_SUITE_EMBEDDED_RESTRICTED = $00000800;
{$EXTERNALSYM VER_SUITE_EMBEDDED_RESTRICTED}
VER_SUITE_SECURITY_APPLIANCE = $00001000;
{$EXTERNALSYM VER_SUITE_SECURITY_APPLIANCE}
const
VER_NT_WORKSTATION = $0000001;
{$EXTERNALSYM VER_NT_WORKSTATION}
VER_NT_DOMAIN_CONTROLLER = $0000002;
{$EXTERNALSYM VER_NT_DOMAIN_CONTROLLER}
VER_NT_SERVER = $0000003;
{$EXTERNALSYM VER_NT_SERVER}
{$ENDIF} // TOSVERSIONINFOEX_DEFINED
function GetOSVersionInfo(var Info: TOSVersionInfoEx): Boolean;
begin
FillChar(Info, SizeOf(TOSVersionInfoEx), 0);
Info.dwOSVersionInfoSize := SizeOf(TOSVersionInfoEx);
Result := GetVersionEx(TOSVersionInfo(Addr(Info)^));
if (not Result) then
begin
FillChar(Info, SizeOf(TOSVersionInfoEx), 0);
Info.dwOSVersionInfoSize := SizeOf(TOSVersionInfoEx);
Result := GetVersionEx(TOSVersionInfo(Addr(Info)^));
if (not Result) then
Info.dwOSVersionInfoSize := 0;
end;
end;
function GetOSVersionText: string;
var
Info: TOSVersionInfoEx;
Key: HKEY;
begin
Result := ´´;
if (not GetOSVersionInfo(Info)) then
Exit;
case Info.dwPlatformId of
{ Win32s }
VER_PLATFORM_WIN32s:
Result := ´Microsoft Win32s´;
{ Windows 9x }
VER_PLATFORM_WIN32_WINDOWS:
if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 0) then
begin
Result := ´Microsoft Windows 95´;
if (Info.szCSDVersion[1] in [´B´, ´C´]) then
Result := Result +´ OSR2´;
end
else if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 10) then
begin
Result := ´Microsoft Windows 98´;
if (Info.szCSDVersion[1] = ´A´) then
Result := Result + ´ SE´;
end
else if (Info.dwMajorVersion = 4) and (Info.dwMinorVersion = 90) then
Result := ´Microsoft Windows Millennium Edition´;
{ Windows NT }
VER_PLATFORM_WIN32_NT:
begin
{ Version }
if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then
Result := ´Microsoft Windows Server 2003´
else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 1) then
Result := ´Microsoft Windows XP´
else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then
Result := ´Microsoft Windows 2000´
else
Result := ´Microsoft Windows NT´;
{ Extended }
if (Info.dwOSVersionInfoSize >= SizeOf(TOSVersionInfoEx)) then
begin
{ ProductType }
if (Info.wProductType = VER_NT_WORKSTATION) then
begin
if (Info.dwMajorVersion = 4) then
Result := Result + #10´Workstation 4.0´
else if(Info.wSuiteMask and VER_SUITE_PERSONAL <> 0) then
Result := Result + 10´Home Edition´
else
Result := Result + #10´Professional´;
end
else if (Info.wProductType = VER_NT_SERVER) then
begin
if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 2) then
begin
if (Info.wSuiteMask and VER_SUITE_DATACENTER <> 0) then
Result := Result + 10´Datacenter Edition´
else if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then
Result := Result + 10´Enterprise Edition´
else if (Info.wSuiteMask = VER_SUITE_BLADE) then
Result := Result + 10´Web Edition´
else
Result := Result + 10´Standard Edition´;
end
else if (Info.dwMajorVersion = 5) and (Info.dwMinorVersion = 0) then
begin
if (Info.wSuiteMask and VER_SUITE_DATACENTER <> 0) then
Result := Result + #10´Datacenter Server´
else if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then
Result := Result + 10´Advanced Server´
else
Result := Result + 10´Server´;
end
else
begin
Result := Result + 10´Server ´ +
IntToStr(Info.dwMajorVersion) + ´.´ +
IntToStr(Info.dwMinorVersion);
if (Info.wSuiteMask and VER_SUITE_ENTERPRISE <> 0) then
Result := Result + ´, Enterprise Edition´;
end;
end;
end;
{ CSDVersion }
if (Info.dwMajorVersion = 4) and
(StrIComp(Info.szCSDVersion, ´Service Pack 6´) = 0) and
(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
´SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\Q246009´, 0,
KEY_QUERY_VALUE, Key) = ERROR_SUCCESS) then
begin
Result := Result + #10´Service Pack 6a´;
RegCloseKey(Key);
end
else
Result := Result + 10 + StrPas(Info.szCSDVersion);
Result := Result + 10´(Build ´ +
IntToStr(Info.dwBuildNumber and $FFFF) + ´)´;
end;
end;
end;
////////////////////////////////////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetOSVersionText);
end;e como faço pra declarar as variáveis no type? quando fui compilar apareceu undeclared identifier: ´Cos Unknown´ ´Cos WinNT´ ´Cos Win2000´.......
GOSTEI 0
Rjun
09/08/2005
To postando uma versão simplificada. Ele só faz o teste se é XP.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function IsXP: Boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.IsXP: Boolean;
var
OS: TOSVERSIONINFO;
begin
OS.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFO);
GetVersionEx(OS);
Result := (OS.dwPlatformId = VER_PLATFORM_WIN32_NT) and
(OS.dwMajorVersion = 5) and (OS.dwMinorVersion = 1);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
if IsXP then
begin
Edit1.PasswordChar := ´|´
Edit1.Font.Name := ´Wingdings´;
end
else
Edit1.PasswordChar := ´*´;
end;
end.
GOSTEI 0
Duolon
09/08/2005
deu erro nessa linha de [b]Missing operator or semicolon/b]
edit1.Font.Name := ´Wingdings´;
GOSTEI 0
Rjun
09/08/2005
Foi mal...coloque o ponto e virgula na linha anterior.
Só uma coisa...eu não testei esse código, pq não tenho nenhum Windows q não seja XP.
Edit1.PasswordChar := ´|´;
Só uma coisa...eu não testei esse código, pq não tenho nenhum Windows q não seja XP.
GOSTEI 0
Duolon
09/08/2005
Foi mal...coloque o ponto e virgula na linha anterior.
Só uma coisa...eu não testei esse código, pq não tenho nenhum Windows q não seja XP.
Edit1.PasswordChar := ´|´;
Agora compilou blz, mais quando execulto, fica normal em vez do ´*´ do XP ou do ´*´ dos outros windows aparece as letras, tipo asdfgjhj no lugar no ´*´
precisa mudar alguma coisa nas propriedades do edit1?
testa ae vc mesmo em qualquer windows pra vc ver q ñ aparece nenhum ´*´
GOSTEI 0
Rjun
09/08/2005
No XP eu testei e funcionou beleza...seu Edit chama Edit1 mesmo?
GOSTEI 0
Duolon
09/08/2005
No XP eu testei e funcionou beleza...seu Edit chama Edit1 mesmo?
sim se chama Edit1, se teria dado erro na compilação..
vc mudo alguma coisa em PasswordChar na propriedade do Edit1 ou em mais alguma coisa?
pq aki nessa propriedade está como #0 por esse motivo tá aprecedendo os caracteres do teclado em vez de ´*´
GOSTEI 0
Duolon
09/08/2005
ops, agora funcionou...
eu tinha colado o codigo do jeito q vc me passou, depois dei 2 click no evento OnShow do formulário e funcionou, ñ sei pq... valew cara :D
eu tinha colado o codigo do jeito q vc me passou, depois dei 2 click no evento OnShow do formulário e funcionou, ñ sei pq... valew cara :D
GOSTEI 0
Duolon
09/08/2005
Só mais uma coisa, como q fica esse código com 3 edits, tipo Edit1, Edit2 e Edit3???
procedure TForm1.FormShow(Sender: TObject); begin if IsXP then begin Edit1.PasswordChar := ´l´; Edit1.Font.Name := ´Wingdings´; end else Edit1.PasswordChar := ´*´; end;
GOSTEI 0
Rjun
09/08/2005
Só mais uma coisa, como q fica esse código com 3 edits, tipo Edit1, Edit2 e Edit3???
procedure TForm1.FormShow(Sender: TObject); begin if IsXP then begin Edit1.PasswordChar := ´l´; Edit1.Font.Name := ´Wingdings´; Edit2.PasswordChar := ´|´; Edit2.Font.Name := ´Wingdings´; Edit3.PasswordChar := ´|´; Edit3.Font.Name := ´Wingdings´; end else begin Edit1.PasswordChar := ´*´; Edit2.PasswordChar := ´*´; Edit3.PasswordChar := ´*´; end; end;
GOSTEI 0
Duolon
09/08/2005
Valew, só falta testar em outro windows q ñ for o XP pra ver se funfou..
GOSTEI 0