Sziasztok!
Itt a vége! Feladom a küszködést:
Gondolom mindeki ismeri a ComboBox alapkomponenst. Egy hasonloan mukodo,
de a már meglevo komponens átirását megkerulo komponenst szeretnek
letrehozni. (semikepp nem lehet a combobox-bol kiindulni)
mibol all egy ilyen combo (nálam)
edit box, egy gomb és egy legördülő lista (ListBox, vagy DrawGrid)
valamilyen modon aktivalodik a legordulo lista (gombra klikk, vagy
az editbox-ban le-nyil).
A megjeleno listának, mint ablaknak a szuloje a Desktop
( SetParent(Handle, 0) ), mert csak így érhető el, hogy a kliens
területen (aktív ablak) kívül is megjelenjen a lelógó rész.
(a legordulo lista plusz tulajdonsagai: a CreateParams()-ban
Params.Style|=WS_BORDER;
Params.ExStyle|=WS_EX_TOOLWINDOW | WS_EX_TOPMOST;
Params.WindowClass.style=CS_SAVEBITS;
az ablak megjelenítése: az edit box-ból
SetWindowPos(
FPopUpGrid->Handle,
HWND_TOP,
r.left, r.top, 0, 0,
SWP_NOSIZE | SWP_NOACTIVATE | SWP_SHOWWINDOW);
tehat nem aktivódik és a focus is megmarad az editbox-nál...
ha az editbox nem kezel le egy billenyut, akkor kuldi a legordulo
listanak (FPopUpGrid)...
ez eddig rendben is volna...
A sima windows-os combobox-nal a legordulo lista megjelenesenel egy
semleges teruletre kattintva (pl. az editbox szulojere TForm) eltunik
a legordulo lista... hogyan ertesul errol az editbox, vagy a legordulo
lista?
a focus vegig az editboxnal marad, aktiv ablak vegig az alkalmazas...
probaltam egy olyat is, hogy a SetCapture()-val az egeresemenyeket
elkapom, de ez nem jo, mert a listbox, drawgrid, stb. is használja...
annyibol sem jo, mert a sima combo-nal is latszik, hogy nem az edit-nél
van a capture...
egy érthetőbb példa:
A delphiben vagy c++builderben a Tooltip expression evaluation...
tehat amikor osztalypeldanynal '.' (pont) vagy '->' lenyom és megjelenik
a lehetséges metódusok, tagok listaja...
ez egy TPopUpListBox ablak (neve: KibitzWindow) latszik az spy++ ablak
listajaban és a TaskManager-ben is (ha aktív).
ezen jol megfigyelhető, hogy az összes egéreseményt rendesen megkapja.
a szerkesztőablak (TEditControl) soha nem veszti el a fokuszt és a
többi alkalmazás rendesen megkapja az egeresemenyeket...
hogy ez miért probléma? amig a user normalisan viselkedik semmi gond,
de ha a legordulo lista lenyitasakor a formot elmozgatja, akkor a
legordulo lista a helyen marad... ilyenkor el kellene tunni...
de nem kapok esemenyt...
talalkozott mar valaki hasonlo problemaval?
elore is koszi:
mean
|
Tisztelt programozotarsaim!
Van egy nagy problemam: TP7 (DOS) alatt gozerovel
irok Matek temaban programokat. Eszrevettem,
hogy nem hajlando a {$I-} direktiva ellenere
sem a tulcsordulast elfelejteni.
A "Floating point owerflow"
(esetlen underflow, de ezzel o nem foglalkozik)
-hatasara is a sajat hibakezelojevel allitja
le a programot, nem var addig amig az "IOResult"
lekerdezesevel torolnem.
Gondolom az egyetlen megoldas a Pascal
megkerulese ASM betettel.
Varom az eszreveteleiteket, es az esetleges
kodreszleteket!
--------------------------------------
-= elore is koszonom: Dani =-
--------------------------------------
|
Hi!
Lenne valakinek otlete, hogy hogyan lehetne megoldani Delphiben, hogy a
kepernyo (vagy csak egy form terulete) adott ido alatt "elsotetuljon"? Regen
talan pascalba volt ra peldaprogramom de nem talaltam meg...
Elore is kosz!
(valaszokat maganba is plz!)
udv:
Brek
|