Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Punkte satt Striche im PW-Feld in VCL mit Manifest (https://www.delphipraxis.net/73946-punkte-satt-striche-im-pw-feld-vcl-mit-manifest.html)

GimbaR 25. Jul 2006 23:50


Punkte satt Striche im PW-Feld in VCL mit Manifest
 
Moin,

Ich muss das Thema nochmal rauskramen.
Luckie fragt ja, wie er diese schwaren Punkte in einem Edit hinbekommt, wie bei einer Passwort-eingabe bei XP. Das Gleiche möchte ich bei einem Edit in meiner Form (hier Form3) auch realisieren. Jedoch gelingt es mir nicht das Flag "ES_PASSWORD" zu setzen :(
Hier einfach mal mein Code, der im OnCreate-Ereigniss der Form3 ausgeführt wird.

Delphi-Quellcode:
procedure TForm3.FormCreate(Sender: TObject);
var
  dwStyle : DWORD;
  AHandle : hWnd;
begin
  AHandle := EdtTest.Handle;
  dwStyle := GetWindowLong(AHandle, GWL_STYLE);
  dwStyle := dwStyle or ES_PASSWORD;
  SetWindowLong(AHandle, GWL_Style, dwStyle);
end;
Leider bekomme ich nicht das Gewünschte Ergebnis :(
Ich bin für jede Hilfe dankbar :)
btw, die suche über google und in DP brachten -mit meinen genannten Suchkriterien^^- keine Erfolge...

so far

GimbaR

Agent159 26. Jul 2006 02:02

Re: Punkte satt Striche im PW-Feld in VCL mit Manifest
 
ja, das hat ich mich auch schonmal gefragt...
Wär schön, wenn das einer wüsste! :corky:

arbu man 26. Jul 2006 07:52

Re: Punkte satt Striche im PW-Feld in VCL mit Manifest
 
Ich glaube es war schrift auf Windings setzen und passwortchar auf #1 aber bei den Schweizern gibt es eine tip dazu

GimbaR 26. Jul 2006 08:28

Re: Punkte satt Striche im PW-Feld in VCL mit Manifest
 
Den Tipp bei den Schweitzern habe ich mir schon angeschaut, der behandelt aber nicht ES_PASSWORD, sondern setzt nur ein anderes Passwort-zeihen, wie man es auch im Editor von Delphi tun kann. UI
In dem oben erwähnten Thread wird aber Luckie empfohlen ES_PASSWORD zu nehmen.

Der Effekt is übrigens aus meiner Sicht nich der Selbe. Ich habe mal spaßeshalber die Edit-Demos aus Luckie Win32API-Tuts genommen und folgendes geschrieben:
Delphi-Quellcode:
function WndProc(wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): LRESULT;
.
.
.
hwndEdit1 := CreateWindowEx(WS_EX_CLIENTEDGE,'EDIT','',
          WS_VISIBLE or WS_CHILD or ES_NOHIDESEL [b] or ES_PASSWORD[/B],10,20,400,20,wnd,
          IDC_EDIT1,hInstance,nil);
.
.
.
end;
Und es lässt sich ein deutlicher (auchw enn er klein ist) Unterschied sehen, zwischen der Variante das Passwortzeichen auf #149/#7 mit der Schriftart Tahoma zu setzen oder aber eben das Flag ES_PASSWORD zu setzen. Ich möchte aber nun wissen, wie ich in der VCL das Flag ES_PASSWORD korrekt setze :)

so far

GimbaR

Flocke 26. Jul 2006 09:17

Re: Punkte satt Striche im PW-Feld in VCL mit Manifest
 
Zitat:

Zitat von GimbaR
Ich möchte aber nun wissen, wie ich in der VCL das Flag ES_PASSWORD korrekt setze :)

Ganz einfach: die VCL nimmt es dir ab. Sobald du die Eigenschaft TEdit.PasswordChar setzt, setzt die VCL auch das Stilbit ES_PASSWORD.

GimbaR 26. Jul 2006 22:43

Re: Punkte satt Striche im PW-Feld in VCL mit Manifest
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von Flocke
Zitat:

Zitat von GimbaR
Ich möchte aber nun wissen, wie ich in der VCL das Flag ES_PASSWORD korrekt setze :)

Ganz einfach: die VCL nimmt es dir ab. Sobald du die Eigenschaft TEdit.PasswordChar setzt, setzt die VCL auch das Stilbit ES_PASSWORD.

Erstmal Danke für die bisherigen Antworten :thumb:
Aber anscheinend muss ich meine Frage ein bisschen umstellen: Wie Bekomm ich das Passwortzeichen von einem Editfeld so hin wie bei XP macht?

Im Anhang habe ich mal zwei Bilder hinzugefügt:

nonVCL
Stammt aus Luckies "WindowsUI\Edit"-Demo, mit folgender Veränderung in Zeile 167:
Delphi-Quellcode:
... WS_VISIBLE or WS_CHILD or ES_NOHIDESEL or ES_PASSWORD,10,20,400,20,wnd, ...
Deutlich zu sehen ist hier, dass das Flag ES_PASSWORD beim Erstellen gesetzt wird. In dem entsprechendem Anhang kann man sehen, dass das Ergebnis mit dem von Windows XP übereinstimmt.

VCL
Stammt von mir selbst und ist nur ein kleines Testprojekt. Das benutzte Edit hat die Schrift Tahoma und das PasswordChar #149. Man kann deutlich erkennen, dass dies nicht der Passworteingabe von XP enstpricht :(

Mein Frage lautet dementsprechend wie oben: Wie schaff ich es mein Edit für die Passworteingabe so zu gestaleten, wie bei XP?

so far

GimbaR

Flocke 26. Jul 2006 23:36

Re: Punkte satt Striche im PW-Feld in VCL mit Manifest
 
Habe im Internet Hinweise dazu gefunden, dass der Stil ES_PASSWORD bei aktivierten Themes von Windows entsprechend abgefangen wird - für die Schriftart ist also der visuelle Stil verantwortlich.

Eventuell hilft das PasswordChar "*" (kann ich jetzt nicht ausprobieren), oder nimm das JvEdit - das sollte das können. Hier steht im Beitrag #4 eine kleine Klasse TPassEdit, die du ebenfalls statt dessen nehmen könntest.

Luckie 26. Jul 2006 23:47

Re: Punkte satt Striche im PW-Feld in VCL mit Manifest
 
Du musst deiner Anwendung noch ein Manifest hinzufügen, dann sollte es gehen.

GimbaR 27. Jul 2006 00:08

Re: Punkte satt Striche im PW-Feld in VCL mit Manifest
 
Zitat:

Zitat von Luckie
Du musst deiner Anwendung noch ein Manifest hinzufügen, dann sollte es gehen.

Steht doch im Titel, dass ich das verwende :)

Aber ich werde mir mal den Link von Flocke anschauen.

so far

GimbaR

GimbaR 27. Jul 2006 01:00

Re: Punkte satt Striche im PW-Feld in VCL mit Manifest
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sooo, ich habe mir mal den Link von Flocke zu Gemüte geführt und eine Komponente aus dem Link gemacht.
Wie sieht das eigentlich rechtlich aus, darf ich die Komponente hier als Anhang zur Verfügung stellen oder muss ich mir die Genehmigung des Autors einholen? Ich werde dies vorerst tun, da der SourceCode ja öffentlich ist. Sollte ich dies aber nich dürfen, werde ich den Anhang sofort löschen *IndianerEhrenWort* :)

Axo, das ganze funktioniert natürlich nur mit Manifest...

Aber bis hierhin ein großes DANKESCHÖN :love: :dp:

so far

GimbaR

PS: Und jezz werde ich mal den X-Mas-Smile missbrauchen um anzudeuten, dass ich jezz schlafen gehe :xmas: :xmas:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz