AGB  ·  Datenschutz  ·  Impressum  







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

ListView on Top

Ein Thema von venice2 · begonnen am 16. Dez 2020 · letzter Beitrag vom 17. Dez 2020
Antwort Antwort
venice2
(Gast)

n/a Beiträge
 
#1

ListView on Top

  Alt 16. Dez 2020, 21:50
Warum kann ich ein ListView nicht On Top setzen das hinter einem anderen liegt?
VCL halt..

  SetWindowPos(ListView1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
echt lustig..

Nur indem ich das andere zurücksetze ? Wer hat sich das denn ausgedacht.
ListView1.SendToBack;

Geändert von venice2 (16. Dez 2020 um 21:59 Uhr)
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
721 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: ListView on Top

  Alt 16. Dez 2020, 23:22
Wieso verwendest du nicht BringToFront?

...ah wahrscheinlich wegen deinem SWP_NOACTIVATE (?)
Michael Gasser

Geändert von Michael II (16. Dez 2020 um 23:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#3

AW: ListView on Top

  Alt 17. Dez 2020, 00:40
Bei Controls sollte doch SendToBack/BringToFront garnicht den Focus ändern, womit SWP_NOACTIVATE egal sein müsste.


Sicher, dass es bei "eingebetteten" Controls überhaupt ein HWND_TOPMOST gibt? (ich glaub fast das geht nur bei TopLevel-Fenstern)

Außerdem ist Top ganz oben und nicht unten.
Zitat:
Nur indem ich das andere zurücksetze ?
ListView1.SendToBack;
Das "Andere"?
ListView1 ist doch das Selbe.

SetWindowPos geht auch nur bei allem was ebenso von TWinControl erbt (was also ein Windows-Control ist),
außer bei allem was von TGraphicControl erbt (z.B. TLabel oder TImage, was keine "eigenständigen" Controls sind, sondern sich nur auf ihren Parent malen, also immer ganz hinten)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Dez 2020 um 00:59 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#4

AW: ListView on Top

  Alt 17. Dez 2020, 01:05
Zitat:
...ah wahrscheinlich wegen deinem SWP_NOACTIVATE (?)
Zitat:
Without the SWP_NOACTIVATE flag, the zorder is changed and the window is activated.
With the flag, only the zorder is changed, but the window is not activated.
Zitat:
Das "Andere"?
ListView1 ist doch das Selbe.
Das andere ist ListView2 welches sich dahinter befindet.

HWND_TOPMOST oder HWND_TOP nichts davon funktioniert.
Bei meinen API Fenstern habe ich solche Probleme noch nicht erlebt.
Zitat:
Und es geht auch nur bei allem was von ebenso von TWinControl erbt (was also ein Windows-Control ist),
Eben nicht.

lege zwei ListViews übereinander und teste es selbst.
Mehr muss man nicht tun.

Versuche dann mit allen Versionen von SetWindowPos das Hintere Fenster nach vorne zu holen.
Bei mir gehts definitiv nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#5

AW: ListView on Top

  Alt 17. Dez 2020, 02:04
HWND_TOPMOST geht nicht,
aber HWND_TOP funktioniert.



Delphi-Quellcode:
// Timer1.Interval = 5000
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Caption := '*';
  SetWindowPos(ListView1.Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
Delphi 10.4, aber ich wüsste auch keinen Grund, warum es in anderen Delphis sich anders verhalten sollte. (so sehr hat sich die VCL nicht verändert,
außer man verpfuscht sich das Leben mit Stylingmist und wundert sich dann hier und da)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Dez 2020 um 02:09 Uhr)
  Mit Zitat antworten Zitat
Incocnito

Registriert seit: 28. Nov 2016
210 Beiträge
 
#6

AW: ListView on Top

  Alt 17. Dez 2020, 07:18
Nur so als Idee:
Wenn ich Elemente habe die an die gleiche Stelle sollen, verwende ich Karteireiter
sprich TPageControl. Mit TabVisible sorge ich dann dafür sorgen, dass die Reiterauswahl
ausgeblendet wird.

Hier mal aus meinen VCL-Tools:
Delphi-Quellcode:
Procedure InvisibleTabs(pcCurrent : TPageControl);
var
  iTab : Integer;
  tsCurrent : TTabSheet;
Begin
  pcCurrent.TabHeight := 1;
  for iTab := (pcCurrent.PageCount - 1) downto 0 do
  Begin
    tsCurrent := pcCurrent.Pages[iTab];
    tsCurrent.TabVisible := False;
  End;
End;
Anmerkdung in eigener Sache:
Ob man dann for iTab := 0 to (pcCurrent.PageCount - 1) do schreibt,
die Zwischenvariable tsCurrent weg läst
oder Feind der ungarischen Notation ist, kann ja jeder nach seinem Belieben anpassen.

Das sieht meiner Meinung nach im Fenster ordentlich aus, man kann als Entwickler
schön zwischen den Ansichten wechseln und der Anwender sieht nur den Reiter,
der gerade "aktiv" ist.

Mit freundlichem Gruß
Incocnito
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: ListView on Top

  Alt 17. Dez 2020, 07:34
Und was hält Dich davon ab, "BringToFront" aufzurufen? Eben getestet, funktioniert wie erwartet und verändert auch nicht das fokussierte Element.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#8

AW: ListView on Top

  Alt 17. Dez 2020, 11:57
Und was hält Dich davon ab, "BringToFront" aufzurufen? Eben getestet, funktioniert wie erwartet und verändert auch nicht das fokussierte Element.
Weil ich ListView1.SendToBack; verwende.
Wo ist der Unterschied?
Es ging aber auch um SetWindowPos.. warum es gestern nicht ging keine Ahnung. Hat mich wohl etwas geritten.
  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 02:36 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