![]() |
Einträge in der Listbox spezifizieren
Hallo
ich hatte mir diese Woche so das Thema Registry.Keys vorgenommen und habe mir dann mal so ein simples Programm geschrieben, mit dem ganz einfach der Autostart ausgelesen wird und ich anschließend auch beliebige Programm hinzufügen kann.... das hab ich auch erfolgreich hinbekommen, doch jetzt möchte ich noch, dass man die aufgelisteten Keys in einer Listbox wieder löschen kann. also markierte Einträge in der Listbox löschen ist ja wiederrum ganz simpel doch ich verstehe (auch von der theorie) noch nicht ganz , wie ich die Markierten Einträge in der Listbox den bestimmten Werten in der Registry zuordnen kann :-( hatte als erstes i-wie gedacht, dass beim auslesen in die listbox schon jeder String einem wert zugeordnet wert, den er bei läschen mit dem markierten vergleicht oder so...aber umgesetzt bekommt ich das i-wie nicht wäre einer Hilfe oder Denkansatz sehr dankbar :) gruß |
Re: Einträge in der Listbox spezifizieren
Was steht denn in deiner ListBox? Der Schlüssel oder der Wert?
|
Re: Einträge in der Listbox spezifizieren
aso... neee
Die Namen stehen da. also mit getvaluenames.(listbox...) |
Re: Einträge in der Listbox spezifizieren
Du könntest Dir mal die Methode AddObject von TStrings ansehen.
[edit] Oder eine ListView nehmen, in der Du den Schlüssel auch in eine Spalte schreibst ;) [/edit] |
Re: Einträge in der Listbox spezifizieren
also ist es dann einfacher mit den werten zu arbeiten ?
und dem markierten/selecten kann man die werte zuordnen... ok mal schauen ob ich so weiterkomme :mrgreen: |
Re: Einträge in der Listbox spezifizieren
*push*
hmm ich hab das zwar was gefunden. wie ich jetzt strings zu einer listbox einfüge und dann mit hilfe addobject das genauer bestimme, aber das hilft mir ja i.wie nicht weiter, weil ich erst: registry.getvaluename(listbox...) damit alle namen in der liste sind aber wenn ich es mit addobject mache, dann muss ich ja eigentlich jeden namen einzelnt einfügen und bestimmen, doch dann haut das ja mit dem entfernen wieder nicht hin, oder ? |
Re: Einträge in der Listbox spezifizieren
Zitat:
du kannst die Werte ja zuerst einer Stringliste hinzufügen und deren Einträge dann mit AddObject der Listbox hinzufügen.
Delphi-Quellcode:
Edit: Du könntest die Variablen RootKey und Key auch im private Abschnitt deklarieren.
uses
Registry; type TMyKeys = class(TObject) RootKey: HKEY; Key, Value: AnsiString; end; //Werte Der Listbox hinzufügen var Reg: TRegistry; ValueList: TStringList; i: integer; myKeys: TMyKeys; Key: AnsiString; RootKey: HKEY; begin Key:= 'Software\Microsoft\Windows\CurrentVersion\Run'; RootKey:= HKEY_LOCAL_MACHINE; ValueList:= TStringList.Create; try Reg := TRegistry.Create; Reg.RootKey := RootKey; try if Reg.OpenKey(Key, false) then begin Reg.GetValueNames(ValueList); Reg.CloseKey; end; finally Reg.Free; end; for i:= 0 to Pred(ValueList.Count) do begin myKeys:= TMyKeys.Create; myKeys.RootKey:= RootKey; myKeys.Key:= Key; myKeys.Value:= ValueList.Strings[i]; ListBox1.Items.AddObject(ValueList.Strings[i], myKeys); end; finally ValueList.Free; end; //markierten Wert löschen var myKeys: TMyKeys; Reg: TRegistry; begin with Listbox1 do begin if ItemIndex> -1 then begin if Items.Objects[ItemIndex] is TMyKeys then begin myKeys:= Items.Objects[ItemIndex] as TMyKeys; if MessageDlg(Format('Den Wert "%s" in der Registry löschen?', [myKeys.Value]), mtConfirmation, [mbYes, mbNo], 0)= mrYes then begin Reg := TRegistry.Create; Reg.RootKey := myKeys.RootKey; try if Reg.OpenKey(myKeys.Key, false) then begin if Reg.DeleteValue(myKeys.Value) then begin if Items.Objects[ItemIndex] is TMyKeys then TMyKeys(Items.Objects[ItemIndex]).Free; Items.Delete(ItemIndex); end; Reg.CloseKey; end; finally Reg.Free; end; end; end; end; end; //TMyKeys wieder freigeben var loop : integer; begin with Listbox1 do begin for loop := 0 to pred(Items.Count) do if Items.Objects[loop] is TMyKeys then TMyKeys(Items.Objects[loop]).Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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