![]() |
Opendialog, eigene Navigation?
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
hab da mal wieder ne kleine Frage.... Ist es möglich bei einem Opendialog (angehängtes Bild) das im roten Rahmen selber zu verändern ? Also spezielle Ordner zu Verfügung stellen und nicht den Standard (Desktop, Eigene Dateien, usw.) Gruß Ruben |
Re: Opendialog, eigene Navigation?
|
Re: Opendialog, eigene Navigation?
Danke teebee, funktioniert bestens :thumb:
|
Re: Opendialog, eigene Navigation?
kleines Problem hab ich noch damit.
Wenn ich den Opendialog öffne, ist er im Win2000 Style, öffne ich aber erst einen anderen Opendialog dann ist auch mein Opendialog im XP Style... wie kann ich das ändern? |
Re: Opendialog, eigene Navigation?
Zitat:
das hat bei mir nicht wirklich funktioniert, hab den OPendialog nur noch im Win2000 Style bekommen, vielleicht habe ich auch was falsch gemacht... Ich hab mir jetzt was eigenes geschrieben...
Delphi-Quellcode:
damit funktioniert es.
uses Registry;
procedure TFormFab.Oeffnen1Click(Sender: TObject); var Filename : String; begin SetPlacesBar; try if Opendialog1.Execute then begin // mach was end; finally ResetPlacesBar; end; end; //********************************************************************************************************************* Procedure TFormFab.SetPlacesBar; begin with TRegistry.Create do try RootKey := HKEY_CURRENT_USER; if OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\ComDlg32\Placesbar',True) then begin WriteString('Place0', 'O:\OFC-FileStorage\FabSources\'); WriteString('Place1', 'O:\Prodator 2\'); WriteString('Place2', 'O:\'); WriteInteger('Place3', 17); //Arbeitsplatz WriteString('Place4', 'Desktop'); CloseKey; end; finally Free; end; end; //********************************************************************************************************************* procedure TFormFab.ResetPlacesBar; //setzt die PlacesBar wieder auf den Standard begin with TRegistry.Create do try RootKey := HKEY_CURRENT_USER; if OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\ComDlg32\Placesbar',True) then begin WriteInteger('Place0', 8); //Verlauf WriteInteger('Place1', 0); //Desktop WriteInteger('Place2', 5); //Eigene Dateien WriteInteger('Place3', 17); //Arbeitsplatz WriteInteger('Place4', 18); //Netzwerkumgebung CloseKey; end; finally Free; end; end; Viel Spaß damit, sollte es jemand brauchen können :-D Gruß Ruben |
Re: Opendialog, eigene Navigation?
Nein, der Code ist nicht schön! Was ist wenn der Benutzer sich seine Eigenen Einträge definiert hat ?
Da setzt du ihn wieder auf des OS Standard zurück und diser wird sich dafür bedanken. Lies lieber die Einträge aus... mfg, Björn |
Re: Opendialog, eigene Navigation?
hi Björn,
da hast du Recht, aber bis jetzt hatte ich bei mir nichts definiert und kannte nur den OS Standard. Deshalb stört mich das im moment nicht wirklich, ich hab das halt heute mittag kurz rein gemacht. Werde es aber in naher Zukunft umschreiben und auslesen. Gruß Ruben |
Re: Opendialog, eigene Navigation?
so, jetzt eine Version mit auslesen...
Delphi-Quellcode:
hoffe das die Version jetzt eher den Ansprüchen der Allgemeinheit dient :-D uses Registry; var KeyList : TStrings; procedure TForm1.Oeffnen1Click(Sender: TObject); var Filename : String; begin SetPlacesBar; try if Opendialog1.Execute then begin // mach was end; finally ResetPlacesBar; end; end; //********************************************************************************************************************* function TForm1.ReadKey(Key:String): String; var Reg : TRegistry; sHelp : String; begin Reg := TRegistry.Create; Result := ''; try Reg.RootKey := HKEY_CURRENT_USER; if Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\ComDlg32\Placesbar',false) then begin try sHelp := Reg.ReadString(Key); except sHelp := IntToStr(Reg.ReadInteger(Key)); end; end; finally Reg.Free; end; Result := sHelp; end; //********************************************************************************************************************* Procedure TForm1.SetPlacesBar; var Key : String; i : Integer; begin KeyList := TSTringlist.Create; KeyList.Clear; for i := 0 to 4 do begin Key := 'Place'+IntToStr(i); KeyList.Add(ReadKey(Key)); end; with TRegistry.Create do try RootKey := HKEY_CURRENT_USER; if OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\ComDlg32\Placesbar',True) then begin WriteString('Place0', 'O:\OFC-FileStorage\FabSources\'); WriteString('Place1', 'O:\Prodator 2\'); WriteString('Place2', 'O:\'); WriteInteger('Place3', 17); //Arbeitsplatz WriteString('Place4', 'Desktop'); CloseKey; end; finally Free; end; end; //********************************************************************************************************************* procedure TForm1.ResetPlacesBar; var i : Integer; Reg : TRegistry; Key : String; begin Reg := Tregistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; if Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\ComDlg32\Placesbar',True) then begin for i := 0 to KeyList.count -1 do begin Key := 'Place'+IntToStr(i); try Reg.WriteInteger(Key,StrToInt(KeyList[i])); except Reg.WriteString(Key,KeyList[i]); end; end; Reg.CloseKey; end; finally Reg.Free; KeyList.Free; end; end; //********************************************************************************************************************* nehme Verbessungsvorschläge gerne an... Gruß Ruben |
Re: Opendialog, eigene Navigation?
Warum verwendest du nicht RegOverridePredefKey? Damit kannst du dir das Auslesen schenken. Außerdem gibt es in der jetzigen Version Probleme, wenn zwei Programme, die so vorgehen wie du, gleichzeitig laufen, da diese dann gegenseitig ihre Einstellungen überschreiben.
|
Re: Opendialog, eigene Navigation?
Hi Apollonius,
Die Wahscheinlichkeit das zwei Programme, die so vor gehen wie ich, zur gleichen Zeit in die Registry schreiben, halte ich für sehr gering. Wie gesagt, mein erster versuch war mit RegOverridePredefKey, da hatte ich aber das Problem, dass sich der OpenDialog mit dem alten Win2000 Style öffnete. Ich konnte aber nicht rausfinden an was es gelegen hat. Ich habe es mit dem weiter oben von teebee vorgeschlagenen versucht, Zitat:
Gruß Ruben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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