Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Passwortzeichen in TEdit soll Punkt sein (https://www.delphipraxis.net/151359-passwortzeichen-tedit-soll-punkt-sein.html)

Luckie 14. Mai 2010 14:01


Passwortzeichen in TEdit soll Punkt sein
 
Ich habe ein normales TEdit und will als Passwortzeichen die typischen Punkte, wenn unter XP die Themes aktiviert sind. Schriftart ist Tahoma. Nehme ich "*" mit Manifest bekomme ich leider auch nur Sternchen und nicht wie gehofft die Punkte.

Ich habe hier schon diverse Themen gefunden, aber entweder passt das Zeichen doch nicht richtig oder es wir eine extra Komponente verwendet. Aber es muss doch möglich sein, die Punkte ohne Verrenkungen zu bekommen. Ich dachte mit dem BDS2006 sollte das irgendwie möglich sein.

Bernhard Geyer 14. Mai 2010 14:06

Re: Passwortzeichen in TEdit soll Punkt sein
 
AFAIK brauchst du hierbei eine neue Delphi-Version. Die alten Delphi-Versionen zeigen in der VCL hier keine korrektes Theming-Verhalten.

fatalerror 14. Mai 2010 14:09

Re: Passwortzeichen in TEdit soll Punkt sein
 
font: windings
Zeichen: l

rawi 14. Mai 2010 14:12

Re: Passwortzeichen in TEdit soll Punkt sein
 
Bei mir funktioniert es mit #8226 bei passwordchar und ausgewählter Tahoma-Schriftart.

gruß rawi

Bernhard Geyer 14. Mai 2010 14:14

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von rawi
Bei mir funktioniert es mit #8226 bei passwordchar und ausgewählter Tahoma-Schriftart.

Die Standard-VCL von D2006 kann noch nix mit Unicode anfangen.

Luckie 14. Mai 2010 14:16

Re: Passwortzeichen in TEdit soll Punkt sein
 
Also BDS2006 ist noch nicht aktuell genug? Das ist doof.

Zitat:

Zitat von fatalerror
font: windings
Zeichen: l

Nur habe ich dann bei deaktivierten Themes senkrechte Striche, anstatt die Sternchen.

Das sind alles keine befriedigende Lösungen.

fatalerror 14. Mai 2010 14:19

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von Luckie
Nur habe ich dann bei deaktivierten Themes senkrechte Striche, anstatt die Sternchen.

Dann überprüfst du beim Programmstart ob theming aktiviert ist und änderst je nachdem den Font

Andreas L. 14. Mai 2010 14:19

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von Luckie
Also BDS2006 ist noch nicht aktuell genug? Das ist doof.

Zitat:

Zitat von fatalerror
font: windings
Zeichen: l

Nur habe ich dann bei deaktivierten Themes senkrechte Striche, anstatt die Sternchen.

Das sind alles keine befriedigende Lösungen.

Wie wärs damit?

Delphi-Quellcode:
uses .., Themes;

...

begin
  if ThemeService.ThemesEnabled then
  begin
    Edit.PasswordChar := l;
    Edit.Font.Name := 'Wingdings';
  end
  else
  begin
    Edit.PasswordChar := *;
    Edit.Font.Name := 'Tahoma';
  end;
end;
EDIT:

Zitat:

Zitat von fatalerror
Dann überprüfst du beim Programmstart ob theming aktiviert ist und änderst je nachdem den Font

Dann aber besser im OnPaint der jeweiligen Form denn Themes können während der Laufzeit ja de- bzw. aktiviert werden.

Mithrandir 14. Mai 2010 14:22

Re: Passwortzeichen in TEdit soll Punkt sein
 
Haben die Edits in neueren Windowsversionen nicht einen Windowsstil, der die Punkte setzt? Ich meine mich daran erinnern zu können... :gruebel:

himitsu 14. Mai 2010 14:29

Re: Passwortzeichen in TEdit soll Punkt sein
 
Ja, haben sie ... zumindestens, wenn das PasswordChar ein * ist und der XP-Style aktiviert ist, dann wird der Punkt angezeigt.

Ansonsten kann man auch das Zeichen für den Punkt und dessen Schwiftart manuell einstellen.

fatalerror 14. Mai 2010 14:30

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von Mithrandir
Haben die Edits in neueren Windowsversionen nicht einen Windowsstil, der die Punkte setzt? Ich meine mich daran erinnern zu können... :gruebel:

msdn

Luckie 14. Mai 2010 14:31

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von fatalerror
Dann überprüfst du beim Programmstart ob theming aktiviert ist und änderst je nachdem den Font

Ich hatte die Hoffnung, es gäbe schon etwas einfacheres.

himitsu 14. Mai 2010 14:35

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von Luckie
Ich hatte die Hoffnung, es gäbe schon etwas einfacheres.

Du kannst ja auch einfach stantadmäßig selber das Zeichen angeben und den Font anpassen.
(aber wenn dann in zukünftigen Windows das Zeichen geändert wird, dann wird sowas natürlich nicht beachtet)

Schriftart: Marlett
Zeichen: 'h' oder 'i' (bin mir nicht ganz sicher)

Mithrandir 14. Mai 2010 14:38

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von Luckie
Ich hatte die Hoffnung, es gäbe schon etwas einfacheres.

Im Zweifelsfalle einfach den verlinkten Stil nutzen, das Feld via CreateWindowEx selbst erstellen, und schon kümmert sich Windows um deine Pünktchen. ;)

himitsu 14. Mai 2010 14:44

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von Mithrandir
und schon kümmert sich Windows um deine Pünktchen. ;)

Wie erwähnt, hängt es von der WindowsVersion, bzw. der genutzen ComLib und vom XP-Style ab.

Luckie 14. Mai 2010 14:51

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von Mithrandir
Zitat:

Zitat von Luckie
Ich hatte die Hoffnung, es gäbe schon etwas einfacheres.

Im Zweifelsfalle einfach den verlinkten Stil nutzen, das Feld via CreateWindowEx selbst erstellen, und schon kümmert sich Windows um deine Pünktchen. ;)

Ohne VCL funktioniert es ja, das weiß ich. Aber das kann auch keine Lösung sein VCL und nonVCL zu mischen. Ich werde mal gucken, was passiert, wenn ich den Passwortstil mit der Windows API setze.

Namenloser 14. Mai 2010 14:58

Re: Passwortzeichen in TEdit soll Punkt sein
 
Du kannst dir ja ein eigenes Edit ableiten und CreateParams überschreiben.

himitsu 14. Mai 2010 15:02

Re: Passwortzeichen in TEdit soll Punkt sein
 
ES_PASSWORD wird aber auch von der VCL gesetzt.


Delphi-Quellcode:
procedure TCustomEdit.CreateParams(var Params: TCreateParams);
const
  Passwords: array[Boolean] of DWORD = (0, ES_PASSWORD);
begin
  ...
  Style := Style or ... or Passwords[FPasswordChar <> #0] or

rawi 14. Mai 2010 15:04

Re: Passwortzeichen in TEdit soll Punkt sein
 
Hab gerade nochmal mein Delphi 5 aktiviert, zwischen 5 und 2010 hab ich leider nichts anderes.

Zitat:

rawi hat folgendes geschrieben:
Bei mir funktioniert es mit #8226 bei passwordchar und ausgewählter Tahoma-Schriftart.

Die Standard-VCL von D2006 kann noch nix mit Unicode anfangen.
Also bei Delphi 5 funktioniert es mit #149 unter XP und Win7. Allerdings haben bei XP die Zeichen etwas größeren Zeichenabstand. Kann aber auch an meinem (verkorksten) XP liegen.

gruß rawi

Andreas L. 14. Mai 2010 15:07

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von fatalerror
Dann überprüfst du beim Programmstart ob theming aktiviert ist und änderst je nachdem den Font

Ich hatte die Hoffnung, es gäbe schon etwas einfacheres.

Was ist denn an meinem Code schwer? http://www.delphipraxis.net/internal...153360#1153360

Luckie 14. Mai 2010 15:07

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von NamenLozer
Du kannst dir ja ein eigenes Edit ableiten und CreateParams überschreiben.

Wie gesagt, ich kenne diese Lösungen. Aber ich dachte, es gibt etwas einfacheres. Aber anscheinend gibt es diese doch nicht.

@himitsu: Dann kann ich mir das sparen.

Ich werde dann wohl bei den Sternchen bleiben.

Mithrandir 14. Mai 2010 17:05

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von himitsu
ES_PASSWORD wird aber auch von der VCL gesetzt.

Dann sollte man vielleicht mal gucken, warum es dann nicht passt. Irgendwo muss dann ja gepfuscht werden, sonst würde der Stil ja passen.

himitsu 14. Mai 2010 17:08

Re: Passwortzeichen in TEdit soll Punkt sein
 
Zitat:

Zitat von Mithrandir
Irgendwo muss dann ja gepfuscht werden, sonst würde der Stil ja passen.

Siehe Beiträge #10, #11 und #15 :zwinker:

willi200 25. Jan 2011 16:03

AW: Passwortzeichen in TEdit soll Punkt sein
 
Hey Leute.

Also ich hab es mit Schriftart Wingdings und dem Buchstaben "l/L" hingekriegt.

Viel Spaß

willi200

uligerhardt 15. Sep 2011 14:39

AW: Passwortzeichen in TEdit soll Punkt sein
 
Ich weiß, der Beitrag ist alt, aber er wurde grad frisch verlink, und AFAICS fehlt die "beste" Lösung bisher, nämlich CreateParams wie folgt zu überschreiben:
Delphi-Quellcode:
procedure TMyPasswordEdit.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.style := Params.style or ES_PASSWORD;
end;
PasswordChar darf man dann nicht setzen, da sonst die VCL "hilfreich" eingreift und man wieder Sternchen sieht. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:10 Uhr.

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