AGB  ·  Datenschutz  ·  Impressum  







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

ListBox TopLevel

Ein Thema von EWeiss · begonnen am 26. Jul 2016 · letzter Beitrag vom 2. Aug 2016
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

ListBox TopLevel

  Alt 26. Jul 2016, 21:30
Gibt es eine Möglichkeit eine ListBox über allen anderen Komponenten zu setzen inklusive der eigenen Mainform?
Damit sie sich so verhält wie eine Combobox?

Ich hab schon so einiges versucht SetWindowPos und die dafür verwendbaren Flags.
Hat nichts gebracht..

Siehe Bild unten das Teil das wie eine Combo aussieht, bekomme ich nicht über die MainForm.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ListBox TopLevel

  Alt 27. Jul 2016, 09:58
Wenn es sich auf die (Main)Form als Komponente drauf malt, dann nein.

Wenn es selber in einem "eigenem" Fenster ist, dann ja. (siehe Hints, PopupMenüs und DropDown-Fenster ala ComboBox)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: ListBox TopLevel

  Alt 27. Jul 2016, 16:41
Wenn es sich auf die (Main)Form als Komponente drauf malt, dann nein.

Wenn es selber in einem "eigenem" Fenster ist, dann ja. (siehe Hints, PopupMenüs und DropDown-Fenster ala ComboBox)
OK Danke dann werde ich das malversuchen.

Irgendwelche Informationen welche Style des Fensters Verwendung finden?
WS_POPUP oder WS_OVERLAPED
WS_CHILD und oder Parent Handle ?

Glaube das dürfte nicht egal sein damit es funktioniert.

gruss
  Mit Zitat antworten Zitat
Sailor

Registriert seit: 20. Jul 2008
Ort: Balaton
112 Beiträge
 
Delphi 2010 Professional
 
#4

AW: ListBox TopLevel

  Alt 27. Jul 2016, 17:03
FormStyle := fsStayOnTop sollte helfen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: ListBox TopLevel

  Alt 27. Jul 2016, 17:11
FormStyle := fsStayOnTop sollte helfen
Danke sorry ist NonVcl (Hätte ich dabei schreiben sollen)
Und nein würde auch nicht funktionieren.. (mit der ListBox ohne DropDown Window)

Sagte schon das ich SetWindowPos und Konsorte schon versucht habe.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ListBox TopLevel

  Alt 27. Jul 2016, 17:15
Zitat:
Sagte schon das ich SetWindowPos und Konsorte schon versucht habe.
Und wie?

Man könnte auf die blöde Idee kommen und in der Forms.pas nachgucken, was fsStayOnTop macht.
SetWindowPos + HWND_TOPMOST

Aber TopMost würde ich nicht nehmen.
Es muß als Owner das Programmfenster bekommen und vermutlich wird man oft etwas mit WS_POPUP und eventuell SWP_NOACTIVATE verwenden.
Bei Google suchendelphi create popup window
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Jul 2016 um 17:20 Uhr)
  Mit Zitat antworten Zitat
tcoman
(Gast)

n/a Beiträge
 
#7

AW: ListBox TopLevel

  Alt 1. Aug 2016, 17:02
Gibt es eine Möglichkeit eine ListBox über allen anderen Komponenten zu setzen inklusive der eigenen Mainform?
Damit sie sich so verhält wie eine Combobox?

Ich hab schon so einiges versucht SetWindowPos und die dafür verwendbaren Flags.
Hat nichts gebracht..

Siehe Bild unten das Teil das wie eine Combo aussieht, bekomme ich nicht über die MainForm.

gruss
Wuerde mal das probieren...

ListBox1.BringToFront;
Your_Other_Controls.SendToBack;

MfG,
Terence
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: ListBox TopLevel

  Alt 1. Aug 2016, 17:10
Ich weise nochmal darauf hin.
Zitat:
Danke sorry ist NonVcl (Hätte ich dabei schreiben sollen)
Sagte schon das ich SetWindowPos und Konsorte schon versucht habe.
Ich habe es schon gelöst. Danke.
Werde das Thema deshalb aus meinen Abonnierten Themen entfernen.

gruss

Geändert von EWeiss ( 1. Aug 2016 um 17:15 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: ListBox TopLevel

  Alt 2. Aug 2016, 06:38
Ok hier ist die Lösung falls es mal jemand braucht.
Delphi-Quellcode:
WM_LBUTTONDOWN:
  // Die ListBox mit deren Handle auf den Desktop legen
  SetParent(WinHandle, GetDesktopWindow); //(alternativ für GetDesktopWindow einfach 0)
  //TopMost festlegen um das TopLEvel Window zu erhalten
  Skinengine.SetZorder(WinHandle, HWND_TOPMOST);
  //Mouse Event Aufnehmen damit die Mausmessagen an die Layered ListBox weitergereicht werden.
  SetCapture(WinHandle);
  //Layered Attribute für die ListBox setzen
  Skinengine.SetLayeredAlpha(WinHandle, 175);
  ....

WM_LBUTTONUP:
  //Layered Style entfernen sonst sieht man die ListBox nicht mehr. (Child kann kein Layered Window haben)
  OldStyle := GetWindowLong(WinHandle, GWL_EXSTYLE);
  SetWindowLong(WinHandle, GWL_EXSTYLE, OldStyle and (not WS_EX_LAYERED));
  //MouseEvents für die ListBox freigeben
  ReleaseCapture;
  // Vom Desktop zurück in die Hauptanwendung
  SetParent(WinHandle, HParent);
  // ListBox positionieren
  SetWindowPos(WinHandle, HWND_TOP, FLeft, FTop, FWidth - FLeft, FHeight, SWP_NOACTIVATE);
Das wars.
Und das Ergebnis!
Die ListBox ist jetzt TopLevel (geht über die MainForm hinaus und transparent.)

gruss

Geändert von EWeiss (11. Jul 2019 um 15:44 Uhr)
  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 09:01 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