AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Einträge in der Listbox spezifizieren
Thema durchsuchen
Ansicht
Themen-Optionen

Einträge in der Listbox spezifizieren

Ein Thema von Counter909 · begonnen am 3. Jan 2008 · letzter Beitrag vom 4. Jan 2008
Antwort Antwort
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#1

Einträge in der Listbox spezifizieren

  Alt 3. Jan 2008, 13:49
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ß
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Einträge in der Listbox spezifizieren

  Alt 3. Jan 2008, 13:52
Was steht denn in deiner ListBox? Der Schlüssel oder der Wert?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#3

Re: Einträge in der Listbox spezifizieren

  Alt 3. Jan 2008, 14:02
aso... neee



Die Namen stehen da. also mit getvaluenames.(listbox...)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Einträge in der Listbox spezifizieren

  Alt 3. Jan 2008, 14:06
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#5

Re: Einträge in der Listbox spezifizieren

  Alt 3. Jan 2008, 14:15
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
  Mit Zitat antworten Zitat
Counter909

Registriert seit: 10. Aug 2006
129 Beiträge
 
#6

Re: Einträge in der Listbox spezifizieren

  Alt 3. Jan 2008, 16:04
*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 ?
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Einträge in der Listbox spezifizieren

  Alt 4. Jan 2008, 01:30
Zitat von Counter909:
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 ?
Hallo,

du kannst die Werte ja zuerst einer Stringliste hinzufügen und deren Einträge dann mit AddObject der Listbox hinzufügen.
Delphi-Quellcode:
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;
Edit: Du könntest die Variablen RootKey und Key auch im private Abschnitt deklarieren.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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