Iš tikro viskas paprasta. Bet niekaip iki to nedagalvojau, nes application.ProcessMessages veikimo normaliai nežinojau. Nors pats pavadinimas sako, ką jis daro. :) Ačiū. "Žilvinas Ledas" <ledas_REM_ME_@liux.lt> wrote in message news:gta8do$9tr$1@trimpas.omnitel.net... > Na, išties tai viskas paprasta, kai suvoki, kaip veikia kodas :) > > Pamąstykime taip: tu nori, kad tavo pasiųstas keyboard event'as (lt. > vadinkime įvykis) "backspace" įvyktų pirma negu dabar "vykstantis" "a" > įvykis. Tačiau taip neįvyksta. Kodėl? O atsakymas elementarus :) juk > "backspace" ir negali įvykti, nes dabar vyksta "a" įvykis ir tu gauni > veiksmų eilę, kuri ir turi būti: ..., "a", "backspace", ... . > > Ką daryti? Ogi tereikia iškviesti application.ProcessMessages, kas, > paprastai sakant, priverčia apdoroti susikaupusias žinutes, tame tarpe ir > "backspace" įvykį. Taip įvykių eilė pasidaro tokia (supaprastintai): ..., > pradedamas vykdyti "a" (bet dar neįrašomas pats a simbolis), > application.ProcessMessages priverčia vykti "backspace", įvyksta "a", ... > > Taigi, kodas: > > if Key='a' then > begin > keybd_event(VK_BACK, 0, 0, 0); > keybd_event(VK_BACK, 0, KEYEVENTF_KEYUP, 0); > application.ProcessMessages; > end; > > > Gero vakaro, > Žilvinas > > ReM wrote: >> Taip. Čia viskas suprantama. Bet ađ norëjau padaryt tā patá kitaip >> (paprasčiau). keybd_event(VK_BACK, 0, 0, 0); imituoja klaviđo Backspace >> paspaudimā. Tačiau simbolis "a" pasirodo pirmiau, nei suveikia klaviđo >> paspaudimo imitacija. Todël ir nutrina bûtent "a". Jei suveiktø pirmiau, >> bûtø tai, ko man reikia. Iđ tikro pas mane ten viskas daug sudëtingiau. >> Čia tik toká testā padariau, kaip turëtø bût. Matomai kol neiđeina iđ >> KeyPress procedûros keybd_event nesuveikia. Tavo nurodyto bûdo ađ naudoti >> negalësiu, nes viskas bus svetimos programos lange. Arba kitas variantas >> bûtø sugalvot, kaip tā patá atlikt svetimam lange. >> >> "Ninja666" <Ninja666@microsoft.com> wrote in message >> news:gt8o0t$v2p$1@trimpas.omnitel.net... >>> ReM wrote: >>>> Sveiki, >>>> >>>> Paprastutë klaviđo paspaudimo procedûra. Reikia, kad paspaudus "a", >>>> iđtrintø prieđ tai esantá simbolá. >>>> Tikëjausi, kad taip nutrins, tačiau nutrina bûtent simbolá "a". >>>> >>>> procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); >>>> begin >>>> if Key='a' then >>>> begin >>>> keybd_event(VK_BACK, 0, 0, 0); >>>> keybd_event(VK_BACK, 0, KEYEVENTF_KEYUP, 0); >>>> end; >>>> end; >>>> >>>> Kaip padaryt, kad nutrintø prieđ kursoriø esantá simbolá? "a" irgi turi >>>> pasirodyt. >>>> >>> Kaūkaip tu darai pro kitā galā. Nesuprantu ko tu nori, todël pateikiu >>> pavyzdukā tam, ko tu prađai, bet ađ spëju, kad tu darai kaūkā iđ >>> visiđkai kitos pusës. >>> >>> procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); >>> var >>> vText: string; >>> vSelPos: integer; >>> begin >>> if key = 'a' then >>> begin >>> vText := Edit1.Text; >>> vSelPos := Edit1.SelStart; >>> Delete(vText, vSelPos, 1); >>> Edit1.Text := vText; >>> Edit1.SelStart := vSelPos; >>> end; >>> end; >>> >>> >>> beje - vSelPos reikës skaičiuoti kitaip, jeigu tekstas bus paūymëtas. >>> Tada reikës ir vText skaičiuot kitaip :) >> >> > > __________ Information from ESET NOD32 Antivirus, version of virus > signature database 4043 (20090429) __________ > > The message was checked by ESET NOD32 Antivirus. > > http://www.eset.com > > > __________ Information from ESET NOD32 Antivirus, version of virus signature database 4043 (20090429) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com __________ Information from ESET NOD32 Antivirus, version of virus signature database 4043 (20090429) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com