Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: passwörter (***) in der listview?

  Alt 12. Jun 2005, 10:25
Ich würde es über die OwnerData-Property versuchen. Dann musst Du das OnData-Eregnis angeben, das für jedes ListViewItem aufgerufen wird. Dadrin füllst Du alle Werte des ListItems und die entsprechende Spalte mit '*' oder dem Klartext.
Delphi-Quellcode:
Procedure ListView1Data(Sender: TObject; Item: TListItem);
Begin
  Item.Caption := MyUserData[Item.Index].UserName;
  Item.ImageIndex := MyUserData[Item.Index].UserGroupIndex; // <-- Verschiedene bmps für Usergruppen z.B.
  If UserWantsToSeePassword Then
    Item.SubCaptions.Add(MyUserData[Item.Index].UserPassword)
  Else
    Item.SubCaptions.Add('****************');
End;
Das OnChange-Event der 'Klartextpasswärter anzeigen'-Checkbox macht dann nur noch das:
Delphi-Quellcode:
Procedure Checkbox1Change (Sender : TObject);
Begin
  UserWantsToSeePassword := Checkbox1.changed;
  ListBox1.Invalidate;
End;
Füllen brauchst Du die Listview dann nicht mehr, du setzt nur noch
ListView1.Items.Count = MyUserData.Count Beim Einfügen und Löschen von MyUserData-Einträgen setzt Du die Count-Eigenschaft einfach neu. Nochmal: Die ListView.Items fässt Du nie direkt an!

IMHO sollten die OnDraw-Events nur dann verwendet werden, wenn man etwas am Layout ändern will. z.B. Progressbars in Spalten reinmalen oder so.
Aber nix gegen die Lösung von Sharky, denn viele Wege führen zum Ziel

@urbanbruhin: Ich würde die Anzahl der * nicht mit der Länge des Passwortes gleichsetzen, weil man dann gleich sehen kann, wer ein 'schwaches' Passwort hat.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat