Wie programmiert man eine ComboBox?



  • Die Frage habt ihr betreits gelesen.
    Editfeld und Button sind kein Problemm, aber diese aufklappbare Auswahlliste.

    wie würdet ihr das machen?



  • Dir gefaellt wohl TComboBox nicht??? 😉

    Wenn ja, mach doch davon 'ne neue Komponente und pass die an!

    Kannst natuerlich auch an TEdit, TButton noch ein TListBox ranhaengen!
    Die ListBox machste dan Visible = true/ false, wie Du das brauchst!



  • @DerAltenburger
    noch ein TListBox ranhaengen!

    das ist gar nicht so einfach, wie du es dir vorstellst.

    bsp 1. mit einem click auf button wird die liste angezeigt
    dann, wenn man mit der maus egalwo noch mal click verschwindet die liste

    bsp 2. die liste anzuzeigen ist noch komplizierter: die liste muss auch dann vollständig angezeigt werden, auch wenn die nicht in parent-fenster rein passt, also auch über den fensterrand

    [ Dieser Beitrag wurde am 31.03.2003 um 12:17 Uhr von Xqgene editiert. ]



  • zu 2.) CS_PARENTDC



  • oder es wird einfach ein neues popup-fenster erstellt



  • zu 1.

    nach Visible=true;
    ListBox1->SetFocus();

    und in ListBox1->OnExit(...)
    ListBox1->Visible=false;

    zu 2.

    ??? (drum wuerd ich von TComboBox ne neue Kompo ableiten!



  • @DerAltenburger
    OnExit wird nur dann aufgerufen, wenn Control Focus verliert

    @DC
    kann ich CS_PARENTDC auch für bereits erzeugte fenster zuweisen?

    ich will nicht unbedingt das ganze in winapi abilden, wenn es geht



  • nein, das ist ja eine einstellung der fensterklasse. dann musst du eine eigene fensterklasse (nicht im sinne von c++ klasse) registrieren. 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.



  • Xqgene:
    Die beiden Punkte, die du aufgeführt hast, sind das deine Anforderungen an die "Spezial-ComboBox"?

    Wenn ja dann bin ich doch sehr verwirrt, denn das was du da beschreibst ist doch das Standardverhalten der normalen TComboBox!?



  • @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.


Anmelden zum Antworten