Delphi-PRAXiS
Seite 2 von 2     12

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ComboBox-Liste anzeigen ohne ComboBox (https://www.delphipraxis.net/146552-combobox-liste-anzeigen-ohne-combobox.html)

Tonic1024 22. Jan 2010 15:03

Re: ComboBox-Liste anzeigen ohne ComboBox
 
Nimm ne Listbox und fülle sie mit deinen Daten. Mach sie unsichtbar.

Bei Rechtsklick positionierst du sie unter der Maus (X und Y auf Left und Top - auf den Screen umrechnen nicht vergessen) und machst sie sichtbar. Unsichtbar machen kannst du sie auf ItemChange. Fertig.

Alternativ plazierst du sie auf einem Form. Dem Form nimmst du die Titelleiste weg. Dann hast du den selben effekt wie oben, kannst die Listbox aber auf dem ganzen Desktop anzeigen. Über das Form-Objekt kannst du dann von deiner App mit deinem Konstrukt interagieren und notfalls hat sie auch noch ein Handle.

Wie? Das ist unsauber? Stimmt vielleicht... Alle anderen Lösungen auch. ;)


Gruß,

Toni

ChrisE 25. Jan 2010 07:09

Re: ComboBox-Liste anzeigen ohne ComboBox
 
@Alaitoc:
zunächst einmal danke für Deine Anteilnahme. Nur denke ich, das ein Handle einer Canvas (HDC) doch etwas anders ist als ein Handle eines Fensters (HWND). Und ich dachte da eigentlich daran, das man an diesen Handle ran kommt, der auch intern hier verwendet wird:
Delphi-Quellcode:
procedure TCustomCombo.AdjustDropDown;
var
  Count: Integer;
begin
  Count := ItemCount;
  if Count > DropDownCount then Count := DropDownCount;
  if Count < 1 then Count := 1;
  FDroppingDown := True;
  try
    SetWindowPos(FDropHandle, 0, 0, 0, Width, ItemHeight * Count +
      Height + 2, SWP_NOMOVE or SWP_NOZORDER or SWP_NOACTIVATE or SWP_NOREDRAW or
      SWP_HIDEWINDOW);
  finally
    FDroppingDown := False;
  end;
  SetWindowPos(FDropHandle, 0, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or
    SWP_NOZORDER or SWP_NOACTIVATE or SWP_SHOWWINDOW);
end;
Hier wird wohl irgendwie ein Handle verwendet für ein DropDownWindow (FDropHandle). Aber ich weiß auch nicht ob es die richtige Stelle ist und zum zweiten ist der Handle im Protected bereich deklariert. Aber egal, denn ich gehe zunächst den Weg des geringsten Widerstandes wie ich es schon beschrieben hatte und ähnlich wie es Tonic1024 auch meinte -> selber nachbauen was machen braucht.

Danke an alle,

Greez, Chris

Alaitoc 26. Jan 2010 10:11

Re: ComboBox-Liste anzeigen ohne ComboBox
 
Hm habe doch noch was gefunden, vll hilft es dir ja noch:

http://www.swissdelphicenter.ch/de/showcode.php?id=639

MfG Alaitoc


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 Uhr.
Seite 2 von 2     12

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf