AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Opendialog, eigene Navigation?

Ein Thema von Centrii · begonnen am 7. Feb 2008 · letzter Beitrag vom 7. Feb 2008
Antwort Antwort
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#1

Opendialog, eigene Navigation?

  Alt 7. Feb 2008, 09:00
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
Miniaturansicht angehängter Grafiken
opendialog_858.jpg  
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#2

Re: Opendialog, eigene Navigation?

  Alt 7. Feb 2008, 09:21
Dieser Bereich heißt "Places Bar".Hier findest Du einen Artikel dazu, und hier eine Anpassung an Delphi.
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Opendialog, eigene Navigation?

  Alt 7. Feb 2008, 09:48
Danke teebee, funktioniert bestens
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Opendialog, eigene Navigation?

  Alt 7. Feb 2008, 10:35
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?
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Opendialog, eigene Navigation?

  Alt 7. Feb 2008, 15:14
Zitat von teebee:
Dieser Bereich heißt "Places Bar".Hier findest Du einen Artikel dazu, und hier eine Anpassung an Delphi.

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:
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;
damit funktioniert es.

Viel Spaß damit, sollte es jemand brauchen können

Gruß Ruben
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#6

Re: Opendialog, eigene Navigation?

  Alt 7. Feb 2008, 15:26
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
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Opendialog, eigene Navigation?

  Alt 7. Feb 2008, 15:57
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
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Opendialog, eigene Navigation?

  Alt 7. Feb 2008, 16:46
so, jetzt eine Version mit auslesen...

Delphi-Quellcode:

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;

//*********************************************************************************************************************
hoffe das die Version jetzt eher den Ansprüchen der Allgemeinheit dient
nehme Verbessungsvorschläge gerne an...

Gruß Ruben
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Opendialog, eigene Navigation?

  Alt 7. Feb 2008, 16:50
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#10

Re: Opendialog, eigene Navigation?

  Alt 7. Feb 2008, 19:13
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 von teebee:
Dieser Bereich heißt "Places Bar".Hier findest Du einen Artikel dazu, und hier eine Anpassung an Delphi.
aber mit dem Projekt von dem Link habe ich das Verhalten mit dem alten Style. Kannst ja mal ausprobieren, wenn du das Projekt laufen lässt. Wie gesagt, wenn ich zuerst einen anderen OpenDialog starte habe ich das XP-Style. Keine Ahnung an was das liegt.

Gruß Ruben
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  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 08:47 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