Viskas yra paprasciau nei jus galvojate. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key = 'a' then key := #8; end; tuomet vietoj a yra nusiunciamas backspace. thats all folks... ReM wrote: > 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 > > >