Szevasztok!
Az volt az alapvető gondom, hogy nem tudtam üzenetet küldeni a TComboBox
editorának, hogy a selected-et, a kurzor helyét állítsam.
A manuálisan kiadott Home billentyűlenyomásra az történt amit akartam,
de
SendMessage-val ugyanezt nem tudtam elérni, szinte semmilyen paraméterre
nem
reagált.
Felmerült bennem, hogy talán nem jó helyről, nem jó időben küldöm az
üzenetet. Ez lett a megoldás!
Eddig a ComboBox-ba kattintást az OnEnter segítségével kaptam el és innen
küldtem az üzeneteket, amik hatástalanok voltak. Nagyrészt hatástalanok,
és
pont ezért ragaszkodtam sokáig az OnEnter-hez.
Most viszont csináltam egy az Idle időben automatikusan meghívott
MyIdleHandler függvényt és innen már bármilyen üzenet elküldése megy!
Köszönöm a segítségeteket!
Cap
Akit esetleg érdekel a pofon egyszerű megoldás (:-) :
A header file-ban:
void __fastcall MyIdleHandler(TObject *, bool &);
A program file-ban:
// constructor-ban
Application->OnIdle = MyIdleHandler;
boolClickInEditor = false;
void __fastcall TFormRecord::ComboBoxMouseEnter(TObject *Sender)
{
boolClickInEditor = true; // Egérrel a ComboBox-ba kattintok
}
void __fastcall TFormRecord::MyIdleHandler(TObject *Sender, bool &Done)
{
if (boolClickInEditor)
{
boolClickInEditor = false;
SendMessage(ComboBox->Handle, WM_KEYDOWN, VK_HOME, 0); // Home szimulálása
} // if
}
|