Wie programmiert man eine ComboBox?



  • @Jansen

    das ist richtig. ich brauche aber eine combobox, bei der die aufklapbare liste "etwas" komplexer ist, als die der standard-combobox. die normale comboboxliste ist für meine aufgabe zu einfach und bietet zu wenig anpassungsmöglichkeiten



  • Original erstellt von Xqgene:
    Ich brauche aber eine combobox, bei der die aufklapbare liste "etwas" komplexer ist

    Hey! Super Beschreibung! Wenn du Hilfe willst, dann solltest du auch etwas genauer beschreiben, was du machen willst. Vielleicht suchst du ja sowas wie TComboBoxEx - eine Kapselung des Windows-Controls "ComboBoxEx" (ist höchstens ab BCB-Version 4 dabei).

    [ Dieser Beitrag wurde am 01.04.2003 um 03:13 Uhr von WebFritzi editiert. ]



  • es ist doch absolut egal was auf der "liste" ist. es kann z.b. ein Button, Label und TarckBar sein

    keine Stringsliste, auch wenn man die editieren kann oder mit einem Bildchen versehen



  • Original erstellt von <DC>:
    **nein, das ist ja eine einstellung der fensterklasse. dann musst du eine eigene fensterklasse (nicht im sinne von c++ klasse) registrieren.
    **

    glaub ich nicht Tim. *g*

    CS_PARENTDC kann man durchaus auch im Sinne von OOP zuweisen.
    In VCL- Klassen bietet sich da eine Abgleitete Klasse an, in der die Methode CreateParams überschrieben wird. Dort wird der Parameter zugewisen.

    Näheres siehe Link in der Signatur.

    Original erstellt von <DC>:
    **
    aber ich glaube es wird einfach ein neues fenster erstellt, wenn man die combobox aufklappt, weil die combobox auch über die parent form herausragen kann.**

    hm, das hätte ich auch gern geklärt.



  • Hi Xqgene

    Wenn Du was 'komplexes' (beliebiger Inhalt?) in der 'Liste' haben wilsst, probier mal das:

    Erzeuge eine Form (Dialog) mit Application->CreateForm....

    Der Form kannst Du die gewuenschte groesse / Position zuordnen und dann das Teil sichtbar machen. Was in der Form ist, ist egal.

    !!!Parent der Form darf NICHT das Hauptfenster werden!!!

    in OnActivate der Hauptform machste die Form unsichtbar!

    PS: Ich mach sowas aehnliches mit ner Sprechblase, die auch ausserhalb der Hauptform der Maus nachlaeuft)



  • @DerAltenburger
    so was in der art habe ich auch schon mal programmiert. funzt auch. ich habe dabei nur ein "schönheitsfehelr".
    ich drucke auf DropDown Button, es erscheint meine "Liste". so weit, so gut.

    nur wenn ich jetzt auf ein Elment der "liste" klicke, wird mein "Listenfenster" aktiv, das heißt, dass der haupfenster z.b. Titelleiste ändert un solche scherze. und das alles bis der Combofenster verschwindet. für ein paar zehntel sekunde.

    @AndreasW
    gehört zu CS_PARENTDC noch mehr dazu als nur den Parameter in CreateParams() zu setzen?

    [ Dieser Beitrag wurde am 01.04.2003 um 11:07 Uhr von Xqgene editiert. ]



  • Hallo

    also mich würde die Version einer eigenen ComboBox auch interessieren, da ich das Aussehen ändern möchte. Der normale Rahmen gefällt mir nicht und auch das Listenfenster mit dem einfachen schwarzen Rahmen ist nicht gerade modern.

    Gibt es irgendwo einen C/C++ Sourcecode zu so einer neuen Komponente, wo man mal spicken kann ? 😃



  • glaub ich nicht Tim. *g*

    Warum nennst du mich Tim? So heiße ich doch garnicht. Oder ist das eine Art Beleidigung? 😡

    CS_PARENTDC kann man durchaus auch im Sinne von OOP zuweisen.
    In VCL- Klassen bietet sich da eine Abgleitete Klasse an, in der die Methode CreateParams überschrieben wird. Dort wird der Parameter zugewisen.

    Jo, kenn ich. Aber dabei wird höchstwahrscheinlich auch eine neue WNDCLASS Klasse registriert. Achso, eine bestehende WNDCLASS kann man doch ändern mit ::SetClassLong.



  • Original erstellt von <DC>:
    [QB]Warum nennst du mich Tim? So heiße ich doch garnicht. Oder ist das eine Art Beleidigung? [QB]

    Keine Beleidigung. Nur ein dummer Spruch.

    Schau dir mal "Hör mal wer da hämert" an...

    CreateParams wird aufgerufen bevor das Fenster mit CreateWindow erzeugt wird. Bedeutet, dass man sich das SetWindowLong-gedudel sparen kann.

    [ Dieser Beitrag wurde am 01.04.2003 um 13:32 Uhr von AndreasW editiert. ]



  • @AndreasW
    Schau dir mal "Hör mal wer da hämert" an... 😃



  • Ah, werd ich mal machen. 😉

    Ich habs jetzt glaub ich herausgefunden. Diese Drop-Down Box die kommt wenn man auf den Pfeil klickt ist ein extra Fenster mit dem Klassennamen ComboLBox.

    Also hat es wohl nichts mit dem CS_PARENTDC zu tun.



  • und wie kann ich da eingreifen?

    [ Dieser Beitrag wurde am 01.04.2003 um 14:18 Uhr von Xqgene editiert. ]



  • Hab das mit dem Spy-Tool WinSpector gemacht. Da wird geloggt wann welche Fenster erstellt und zerstört wurden. Dann hab ich da ComboLBox gesehen.

    In der MSDN steht es aber auch
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn_classy32.asp

    ComboLBox: The class for the drop-down list box contained in a combo box.



  • Keine Antwort auf die Frage, aber vielleicht trotzdem interessant:

    However, the ComboLBox (list box) window for combo boxes that have the CBS_DROPDOWN or CBS_DROPDOWNLIST style is not a child of the ComboBox window. Instead, each ComboLBox window is a child of the desktop window. This is required so that, when the drop-down list box is dropped, it can extend outside the application window or dialog box. Otherwise, the list box would be clipped at the window or dialog box border.

    Because the ComboLBox window is not a child of the ComboBox window, there is no simple method to get the handle of one window, given the other. For example, given a handle to the ComboBox, the handle to any associated drop- down list box is not readily available. The ComboLBox is a private class registered by USER that is a list box with the class style CS_SAVEBITS.


Anmelden zum Antworten