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 :)