Tema: Re: Klausimas is Delphi
Autorius: Akechi
Data: 2009-05-06 11:20:46
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
> 
> 
> 
3Dastronomyagricultureaudioautosautos.audiautos.audioautos.binariesautos.bmwautos.clubautos.fordautos.hondacrxautos.japanautos.mercedesautos.opelautos.sportautos.volvoautos.vwaviaavia.binariesbankcardsbinariesbooksbuildingcinemacommercecomp.hardwarecomp.softwarecomp.lietuvinimascomp.networksculturedarbas.ieskaudarbas.siulaudesigneconomicselectronicsfaunafauna.aquafauna.binariesfishingflorafotofoto.binariesgamesgames.csgames.onlinegsmgurmanaihumourhumour.binariesinternetlawmicrosoftmotomusicmusic.binariesmusic.instrumentsmusic.LT.binariesnavigacijaphppoliticsprogrammingrpgsportstudyingsveikatatalktesttranslationtransportationtraveltravel.binariestvunixvideovideo.binarieswatersportswwwwww.flashpdaautos.supermama.ltmobiledarbasretro.3Dretro.agricultureretro.astronomyretro.audioretro.autosretro.autos.audiretro.autos.audioretro.autos.binariesretro.autos.bmwretro.autos.clubretro.autos.fordretro.autos.hondacrxretro.autos.japanretro.autos.mercedesretro.autos.opelretro.autos.sportretro.autos.supermamaretro.autos.supermama.ltretro.autos.volvoretro.autos.vwretro.aviaretro.avia.binariesretro.bankcardsretro.beosretro.binariesretro.booksretro.buildingretro.cinemaretro.commerceretro.compretro.comp.hardwareretro.comp.lietuvinimasretro.comp.networksretro.comp.softwareretro.cultureretro.darbasretro.darbas.ieskauretro.darbas.siulauretro.designretro.economicsretro.electronicsretro.e-vejasretro.faunaretro.fauna.aquaretro.fauna.binariesretro.fishingretro.floraretro.fotoretro.foto.binariesretro.gamesretro.games.csretro.games.onlineretro.games.rpgretro.genealogijaretro.gsmretro.gurmanairetro.humourretro.humour.binariesretro.internetretro.YZFretro.YZF.nebukretro.YZF.nebuk.netikintisretro.YZF.nebuk.netikintis.bukretro.YZF.nebuk.netikintis.buk.tikintisretro.lawretro.microsoftretro.mobileretro.motoretro.musicretro.music.binariesretro.music.instrumentsretro.music.LTretro.music.LT.binariesretro.navigacijaretro.newsretro.news.taisyklesretro.newuserretro.pdaretro.phpretro.politicsretro.programmingretro.rpgretro.sportretro.studyingretro.sveikataretro.talkretro.translationretro.transportationretro.travelretro.travel.binariesretro.tvretro.unixretro.videoretro.video.binariesretro.watersportsretro.wwwretro.www.flashdiylt.rkm.news.announcelt.rkm.news.newuser