AGB  ·  Datenschutz  ·  Impressum  







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

FormStyle "resetet" ShellTreeView

Ein Thema von e-gon · begonnen am 17. Nov 2009 · letzter Beitrag vom 17. Nov 2009
Antwort Antwort
e-gon

Registriert seit: 7. Jul 2003
Ort: Stuttgart
163 Beiträge
 
Delphi 6 Enterprise
 
#1

FormStyle "resetet" ShellTreeView

  Alt 17. Nov 2009, 10:44
Hallo,

um mehrere Dateien in einem Verzeichnis umzubenennen schrieb ich ein kleines Programm, wobei unter anderem ein ShellTreeView verwendet wird. Es funktioniert auch alles ganz prima. Allerdings stellte sich bei der Arbeit mit dem Programm heraus, dass es manchmal ganz brauchbar wäre das Fenster vor allen anderen Fenstern anzuzeigen (StayOnTop), in anderen Situationen hingegen nicht. Dafür bietet sich natürlich eine Checkbox auf der Form an, die mit der Eigenschaft FormStyle gekoppelt wird.

Delphi-Quellcode:
if CheckBox1.Checked then Form1.FormStyle:= fsStayOnTop
else Form1.FormStyle:= fsNormal;
Dabei stieß ich jedoch auf ein Problem: Immer wenn zur Laufzeit FormStyle geändert wird, kollabieren sämtliche Knoten des ShellTreeView und der Desktop wird angezeigt, was natürlich mitten in der Arbeit sehr nervig ist.
In der Delphi-Hilfe (Delphi 6.0) steht ein Hinweis, dass der Wert von FormStyle nicht zur Laufzeit geändert werden sollte. Hat das damit zu tun? Kennt jemand einen Trick diesen Reset von ShellTreeView zu verhindern? (ShellTreeView1.Path würde zwar den aktuellen Pfad wieder herstellen, nicht aber die anderen bereits geöffneten Knoten!) Oder wie kann man ein zur Laufzeit ein- und ausschaltbares "StayOnTop" sonst noch verwirklichen?

Gruß
e-gon
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: FormStyle "resetet" ShellTreeView

  Alt 17. Nov 2009, 10:49
Hi, ich benutze dafür folgenden Code:

Delphi-Quellcode:
procedure TForm_Main.spbStayOnTopClick(StayOnTop: Boolean);
begin
  if StayOnTop then
  begin
    SetWindowPos(Handle,
                 HWND_TOPMOST,
                 Left, Top, Width, Height,
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
  end
  else
  begin
    SetWindowPos(Handle,
                 HWND_NOTOPMOST,
                 Left, Top, Width, Height,
                 SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
  end;
end;
Gruß,
Stefan
Stefan
  Mit Zitat antworten Zitat
e-gon

Registriert seit: 7. Jul 2003
Ort: Stuttgart
163 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: FormStyle "resetet" ShellTreeView

  Alt 17. Nov 2009, 10:55
Hallo GPRSNerd,

vielen Dank für die schnelle Antwort. Der Code funktioniert super! Genau das was ich gesucht habe! DANKE!!!

Gruß
e-gon
  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 18:20 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