Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - EnvironmentVariablen in Tlistview pressen
uranop - Sa 29.11.08 18:15
Titel: EnvironmentVariablen in Tlistview pressen
Hallo Leute,
nach langer Abstinenz mal wieder ne "nervige" Frage von mir : )
Ich lese derzeit 2 verschiedene SystemVariablen mit Hilfe von Tinos Beitrag
->
http://www.delphi-library.de/topic_systemweit+Umgebungsvariablen+setzenlesen_18588.html
aus, und beschreibe die - falls leer -.
Jetzt möchte ich einen Schritt weiter gehen ...
Ich würde gerne die kompletten EnvironmentSettings für User und System auslesen,
und diese dann aehnlich der >> winmsd << in einen Tlistview (im folgenden TLV ) schreiben
das TLV hat 3 Spalten / Collums
Name, Wert, User
wie kann ich nun hergehen und mit sowas wie
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin Caption := GetSystemWideEnvironmentVariable (eoSystem, 'OS'); end; |
das entsprechend in die liste pumpen ?
Zumal ich das ja nicht einzeln abfragen soll sondern alles auf einmal also mit nem wildchar ?
Bin schon wieder etwas raus aus der Materie und bräuchte mal wieder nen mittel bis grossen Schubbs in die richtige Richtung :)
Danke
jaenicke - Sa 29.11.08 19:03
Wie wäre es mit ListViewX.Items.Add? ;-)
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| with ListViewX.Items.Add do begin Caption := 'Test'; SubItems.Add('Spalte 2'); SubItems.Add('Spalte 3'); end; |
uranop - Sa 29.11.08 21:26
heisst das mit anderen Worten ich kann keine Massenabfrage machen ?
Um dann mit dem Array die Liste zu bedampfen ?
jaenicke - Sa 29.11.08 21:27
Als letztes wurde dir doch gerade eine Funktion gepostet, die dir die programmbezogene Liste liefert und wie du das einträgst in die ListView hatte ich dir gepostet. Wo ist das Problem? :nixweiss:
Und bei den systemweiten Umgebungsvariablen kannst du dir ja eine Liste der Einträge in dem Registryzweig holen. (den siehst du ja deinem eigenen Link)
uranop - Sa 29.11.08 21:34
ARGH ich sollte nicht zuviele Sachen parallel bearbeiten xD
hab mich doch tatsaechlich wieder verrant ...
jou merci erst mal ich werde mal sehen wie ich das msdn zeuch verwerten kann
uranop - So 30.11.08 11:26
also ich mach das nun pur ueber die registry ...
ich bekomme auch ansatzweise das hin was ich will.
habe dabei nur ein problem ...
ich will ja "key-name" UND "key-wert" in der listview haben...
wenn ich den listview style auf vsReport setze , dann spackt die VCLSkin komponente rum ...
also geht das nicht.
nun wollte ich umschwenken auf die valuelist .
dort sind wenigstens die spalten schön definiert .
stellt sich jetzt noch die frage wie ich meine werte da rein jage : )
[EDIT]
Problem gelöst ... einfach "showcolumnheaders" ausgeschalten und schon geht dad mit VCL Skin ...
funktionierender Code wird nachgereicht.
jaenicke - So 30.11.08 11:58
uranop hat folgendes geschrieben : |
ich will ja "key-name" UND "key-wert" in der listview haben...
wenn ich den listview style auf vsReport setze , dann spackt die VCLSkin komponente rum ... |
Das kann ich nicht reproduzieren :nixweiss:, bei mir funktioniert das mit der VCLSkin Demo wunderbar, auch mit vsReport. Wo ist das Problem denn dabei?
uranop hat folgendes geschrieben : |
nun wollte ich umschwenken auf die valuelist .
dort sind wenigstens die spalten schön definiert .
stellt sich jetzt noch die frage wie ich meine werte da rein jage : ) |
Dafür gibt es dort die Eigenschaft Strings.
uranop - So 30.11.08 12:20
Sooo ... hier das was ich gebaut habe ...
wie immer nen haufen Wind um nicht grade viel : )
Auch wenns nicht 100% sauber gecodet ist, erfüllts erst mal den zweck
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85:
|
procedure TForm1.Button48Click(Sender: TObject);
var Reg: TRegistry; sList: TStringList; i: integer; Item: TListItem; s : string; Column: TListColumn; begin begin ListView1.Columns.Clear; Column := ListView1.Columns.Add; Column.Caption := 'Name'; Column.Width := 200; Column := ListView1.Columns.Add; Column.Caption := 'Wert'; Column.Width := 297;
Reg := TRegistry.Create; Reg.RootKey := HKEY_CURRENT_USER; Reg.RegistryConnect(Edit24.Text); sList := TStringList.Create; try if Reg.OpenKey('Environment',false) then begin Reg.GetValueNames(sList); for i := 0 to sList.Count - 1 do begin Item := ListView1.Items.Add; Item.Caption := sList[i]; s := Reg.ReadString(sList[i]); Item.SubItems.Add(s); end; Reg.CloseKey; end; finally Reg.Free; sList.Free; end; end;
begin
ListView2.Columns.Clear; Column := ListView2.Columns.Add; Column.Caption := 'Name'; Column.Width := 200; Column := ListView2.Columns.Add; Column.Caption := 'Wert'; Column.Width := 297;
Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.RegistryConnect(Edit24.Text); sList := TStringList.Create; try if Reg.OpenKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment',false) then begin Reg.GetValueNames(sList); for i := 0 to sList.Count - 1 do begin Item := ListView2.Items.Add; Item.Caption := sList[i]; s := Reg.ReadString(sList[i]); Item.SubItems.Add(s); end; Reg.CloseKey; end; finally Reg.Free; sList.Free; end;
end;
end; |
Aussehen tuts dann so wie im Anhang
jaenicke - So 30.11.08 13:03
Du kannst die Spalten der ListView übrigens auch im Objektinspektor schon festlegen, wenn du die Spalten nicht während das Programm läuft verändern möchtest (um verschiedene Inhalte in der gleichen ListView anzuzeigen) ;-).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!