Deutsch
Forum

Gridbox in Choicebox

 

Ralph
Theobald
Hallo ,

ich habe eine Gridbox in eine Choicebox gebastelt , leider ist die Gridbox
nicht erreichbar, wie kann ich diese aktivieren.
KompilierenMarkierenSeparieren
Set(FastMode,1)
 $H windows.ph
 $H messages.ph
Declare  oldcallback&,static&,brush&,raus&,hGrid&,titel$
cls
oldcallback&=~SetWindowLong(%hwnd,~GWL_WNDPROC,ProcAddr(newcallback,4))
static&=Create(choicebox,%hwnd,Choicebox,16,16,560,180)

WhileNot raus&

    WaitInput

EndWhile

End

PROC setcolor

    Parameters col&,bk&,wParam&
    declare Brush&

    IF Brush&

        ~DeleteObject(Brush&)

    endif

    Brush& = ~CreateSolidBrush(bk&)
    ~SetBkMode(wParam&, ~TRANSPARENT)
    ~SetBKColor(wParam&,RGB(195,116,95))
    ~SetTextColor(wParam&,col&)
    RETURN Brush&

endproc

Proc newcallback

    Parameters wnd&,msg&,wparam&,lparam&

    IF msg&=~WM_CTLCOLOREDIT

        RETURN SetColor(rgb(255,0,0),rgb(255,255,0),wParam&)

    Endif

    IF msg&=~WM_CTLCOLORLISTBOX

        Titel$ = Links;0;80;Mitte;2;100;Rechts;1;80
        hGrid&=Create(GridBox,lparam&, Titel$, 3,1,1,549,140)
        AddString(hGrid&, AB|DEF|0123)
        AddString(hGrid&, GHI|J23KL|012345)

        IF brush&

            ~DeleteObject(brush&)

        EndIf

        brush&=~CreateSolidBrush(Rgb(0,0,255))
        RETURN brush&

    Endif

    If msg&=~WM_CLOSE

        ~DeleteObject(brush&)
        raus&=1

    Endif

    RETURN ~CallWindowProc(oldcallback&,wnd&,msg&,wparam&,lparam&)

EndProc


Gruß Ralph
 
Xprofan 10 , AMD Athlon 3000+, 1GB
08.03.2007  
 



Beim Klick auf die Choicebox erhalte ich leider nur einen Absturz.
 
08.03.2007  
 




Jörg
Sellmeyer
iF
Beim Klick auf die Choicebox erhalte ich leider nur einen Absturz.


Interessant - bei mir nicht. Ich kann aber auch das Listview nicht anwählen.
Sieht jedenfalls ganz lustig aus. Allerdings ist es fraglich, ob es in der Form irgendeinen Nutzen bringt. Du mußt ja das Control jedesmal neu erstellen. Bei umfangreichem Inhalt dürfte das ziemlich bremsen.
Mehr fällt mir dazu leider nicht ein, da dies ganze Callback-Zeugs mir immer Kopfschmerzen bereitet.
Gruß
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
08.03.2007  
 



Jupp - Callbacks in XProfan sind leider aufgrund dessen das ProcAddr noch ungestackt arbeitet nicht empfehlenswert und werden somit immer Probleme bereiten. Vielleicht gibts in X11 Abhilfe.
 
08.03.2007  
 




Ralph
Theobald
danke euch beiden,

Xprofan 10 hat ein Control (Dateedit) bei dem funktioniert der Focus auf dem
Kalender. Vielleicht stimmt die Message in der Callbackroutine nicht .
Werd mal noch ein wenig testen.

Gruß Ralph
 
Xprofan 10 , AMD Athlon 3000+, 1GB
08.03.2007  
 



Ich hab ne Lösung - ganz ohne Fastmode und Procaddr.

Nur noch eine kleine Unstimmigkeit beheben...
 
08.03.2007  
 



Sieht aus als ob:
KompilierenMarkierenSeparieren Die Nichtxpsevariante:
KompilierenMarkierenSeparieren
DECLARE __cf1&,__cf2&
Def __cf1(2) !KERNEL32,GetProcAddress
Def __cf2(1) !KERNEL32,GetModuleHandleA
__cf1&=__cf1(__cf2(user32.dll),FindWindowExA)
__cf2&=__cf1(__cf2(user32.dll),GetAsyncKeyState)
CLS
var STATIC&=CREATE(choicebox,%HWND,Choicebox,16,16,560,180)
USERMESSAGES 16,$0134

WHILE 1

    WAITINPUT

    SELECT %UMESSAGE

        CASEOF 16

        BREAK

        CASEOF $0134

        PROCEEDCHOICEBOX
        OTHERWISE

    ENDSELECT

ENDWHILE

end

proc PROCEEDCHOICEBOX

    var TITEL$=Links;0;80;Mitte;2;100;Rechts;1;80
    var PARENT&=call(__cf1&,65556,0,ComboLBox,0)
    SHOWWINDOW(PARENT&,0)
    var HGRID&=CREATE(GridBox,%HWND, TITEL$, 3,16,40,WIDTH(PARENT&),HEIGHT(PARENT&))
    SENDKEY(PARENT&,27)
    ADDSTRING(HGRID&,AB|DEF|0123)
    ADDSTRING(HGRID&,GHI|J23KL|012345)

    WHILE call(__cf2&,1)<>0

    ENDWHILE

    DULCOIF
    WAITINPUT

    IF GETFOCUS(STATIC&)

        SENDKEY(PARENT&,27)

    ENDIF

    var S$=

    IF GETCURSEL(HGRID&)>-1

        S$=GETSTRING$(HGRID&,GETCURSEL(HGRID&))

    ENDIF

    DESTROYWINDOW(HGRID&)

    IFNOT S$=

        LOCATE 10,1
        PRINT Ausgewählt: ,S$

    ENDIF

endproc

proc DULCOIF

    SETTIMER 1
    WAITINPUT
    KILLTIMER

endproc


727 kB
Hochgeladen:08.03.2007
Ladeanzahl103
Herunterladen
 
08.03.2007  
 



Ich würde daraus warscheinlich eine Klasse bauen um das Control mit einem einzelnen Aufruf zu Kontrollieren und mehrere davon erstellen zu können - aber das bleibt dann Dir überlassen.
 
08.03.2007  
 



Hallo IF...

Habe bei mir unter Windows98 die EXE mal getestet - läuft nicht. Die Choicebox klappt sofort wieder zu und es ist nur ein Farbengewirr zu sehen.
 
08.03.2007  
 



Schade mit Win98, habs natürlich für Windows-XP geschrieben und getestet.
 
08.03.2007  
 



iF
Schade mit Win98, habs natürlich für Windows-XP geschrieben und getestet.


Oder evtl. nur für deinen Rechner oder für eine bestimmte Version der comctl32.dll?
 
08.03.2007  
 



Auf einem XPHome und ein XPPro - beide Uptodate.
 
08.03.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

11.800 Betrachtungen

Unbenanntvor 0 min.
RudiB.26.10.2021
Christof Neuß18.09.2018
rquindt25.04.2018
Rainer Hoefs02.06.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie